参考Java中的“嵌套”泛型参数

时间:2015-11-05 23:28:34

标签: java generics

假设我有:

class A<T> {
...
}

class B<L extends A<?>> {
...
}

在B的范围内,有没有办法引用L表示的类型的“嵌套”泛型参数T? (显然不是在运行时)

我能找到的只是this,但没有回答我的问题。

1 个答案:

答案 0 :(得分:3)

如果您偶尔需要引用?所代表的类型,那么将它class B<T, L extends A<T>>设置为尴尬和恼人。

您可以做的是每次需要引用T时使用通用帮助方法。

例如:

<T, L extends A<T>> void foo(L l) {
    // You can refer to both L and T here
}

B内,如果您的变量var类型为L,则可以

foo((A<?>) var)

以下是一个完整的例子:

public class Example {

    static class A<T> {}

    static class B<L extends A<?>> {

        void bar(L l) {
            foo((A<?>) l);
        }
    }

    static <T, L extends A<T>> void foo(L l) {
        // You can refer to both L and T here
    }
}