java - 访问参数化类型的类型参数

标签 java generics nested-generics

我有一个参数化类型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+1x 的值是多少。在您使用某些特定参数调用 f 之前,x 只是一个标签。

关于java - 访问参数化类型的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234063/

相关文章:

java - Flink 流 - 笛卡尔积和流上的窗口

java - Tomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中

r - 使用自定义函数和参数拟合模型

java - 谓词<? super X>.and(Predicate<? super X>) 不适用于参数 Predicate<? super X>

java - 为什么这些泛型不能在 OpenJDK7 中编译,但可以在 OpenJDK6 中编译

java - 泛型树,自界泛型

java - 在 Java 中解码 JSON 格式

java - String.split() 没有按预期工作

java - 泛型参数的单例Bean实例

java - 使用嵌套泛型和继承编译错误