我可以使用其他通用类参数的超类中的通用类参数作为方法参数吗

时间:2019-04-17 10:42:10

标签: java

我有一个通用类的层次结构,想将我的通用类参数的超类的通用类参数用作方法参数(我知道这听起来很混乱,请看下面的代码)

class Superclass<ID> { ... }

class MyClass<T extends Superclass<ID>, ID> { 

    T useId(ID id) { ... }

}

以上方法有效,但是我想摆脱第二个泛型类参数(ID),因为它已经在T的某个位置了。有没有一种方法可以获取和使用超类的ID作为方法参数?

1 个答案:

答案 0 :(得分:1)

让我们首先这样更改代码:

class MyClass<T extends Superclass<ID>, ID>

现在您具有泛型设计的类型安全性。 如果您使用“?”,则SuperClass中的ID在MyClass中是不同的(仅使用相同名称的占位符)。现在,您不想摆脱ID,因为这是您课程的编译时安全性