是否有任何方式使用由包含類聲明的類型變量作爲在內部類中聲明的類型變量的綁定?通過包含類類型變量綁定的內部類類型參數
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