是否有任何方式使用由包含类声明的类型变量作为在内部类中声明的类型变量的绑定?通过包含类类型变量绑定的内部类类型参数
class Test<E> {
class Inner<T extends E> {}
<T extends E> void doStuff(T arg) {}
public static void main(String[] args) {
new Test<Number>().doStuff(new Integer(0)); // works fine, as expected
new Test<Number>().new Inner<Integer>(); // won't compile
}
}
的javac给出了这样的错误:
Test.java:6: type parameter java.lang.Integer is not within its bound
new Test<Number>().new Inner<Integer>();
^
我无法找到的类型,将满足编译器的任意组合。 Inner
与doStuff
所声明的类型参数T
之间有什么区别?为什么一个人工作,另一个人不工作?
我不是在寻找替代品,我只是想更好地理解语言是如何工作的。
该示例编写并运行良好,如我所写。 – ILMTitan 2011-01-27 23:55:04
@ILMTitan你在用什么编译器? – gdejohn 2011-01-27 23:59:09