Ok有關javas泛型,iterable和for-each循環的問題。問題在於,如果我聲明我的'測試'類是無類型的,那麼我將失去關於我所有函數的所有通用信息,因爲每個函數都不會這樣。Java無類型泛型類,刪除它們的功能泛型類型
例
public class Test<T> implements Iterable<Integer>{
public Test() {}
public Iterator<Integer> iterator() {return null;}
public static void main(String[] args) {
Test t = new Test();
//Good,
//its returning an Iterator<object> but it automatically changes to Iterator<Integer>
Iterator<Integer> it = t.iterator();
//Bad
//incompatable types, required Integer, found Object
for(Integer i : t){
}
}Untyped generic classes losing
}
當 '測試T' 是非類型化的,則 '迭代()' 功能返回 '遊標' 而不是 '迭代<整數>'。
我不完全確定它背後的原因,我知道一個解決方案就是在測試<上使用通配符? > t = new test()'。然而,這不是理想的解決方案。
他們有什麼辦法只編輯類聲明及其函數,併爲每個循環工作無類型?
如果使用原始類型,在方法仿製藥將被忽略(見最新的Java謎題分期付款)。不要使用原始類型。最近版本的javac應該給出警告。 – 2010-12-15 01:04:24
感謝您的視頻鏈接,在他們的非常有趣的東西。 >背後的推理現在變得更加流行。 – user542481 2010-12-15 18:20:54