我有一个参数化类型A<T extends B>
,还有另一个C<T2 extends A>
.
是否可以(静态)引用T
从内部子类C
无需添加T
作为 C
的第二个类型参数?目标是向 C
添加一个方法返回类型 T
。
我想写的内容:
class A<T extends B> {
}
class C<T2 extends A<T>> {
T myMethod() {
}
}
最佳答案
就目前情况而言,您已在 C
定义中使用 A
作为原始类型:
C<T2 extends A>
这是一个坏主意,您不能指望在此上下文中获得有关类型参数的信息,因为您尚未指定任何类型参数。找不到T
。
在 A
的定义中,类型 T
只是一个参数。在您使用特定的 A
和特定类作为参数之前,T
不会引用任何内容。定义 C
时,您必须说明要扩展的 A
的风格,或者换句话说,指定真实类型。
您所做的有点像询问 f(x) = x+1
中 x
的值是多少。在您使用某些特定参数调用 f
之前,x
只是一个标签。
关于java - 访问参数化类型的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234063/