Ok javas generics、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' が型なしの場合、 'イテレータ()' 関数が返す 'イテレータ' の代わりに 'イテレータ<整数>'。
私はそれの背後にある理由は確かではありませんが、私はそのための修正点は 'Test <'のワイルドカードを使用していることを知っていますか? > t =新しいテスト() 'しかし、これは理想的ではありません。
クラス宣言とその関数を編集し、各ループの作業を型なしにする方法はありますか?
を、メソッドのジェネリック医薬品は、(最新のJavaのpuzzlersの割賦を参照)は無視されます。生の型は使用しないでください。最近のバージョンのjavacは警告を出すべきです。 –
ビデオリンクをありがとう、彼らの非常に興味深いもの。 >の背後にある推論は今や意味をなさない。 – user542481