ジェネリック型を使用して問題を解決できる場合は、Javaが無制限のワイルドカードを提供した理由例無制限のワイルドカードとJavaの汎用タイプの違いは何ですか?
class UnBoundedUsage {
//Method 1
public static void unboundedMethod(List<?> list) {
for(Object obj : list) {
System.out.println(obj);
}
}
//Method 2
public static <T> void methodWithType(List<T> list) {
for(T obj : list) {
System.out.println(obj);
}
}
}
については は、誰もが方法2は、私たちの要求を解決することができるなら、私は理解する助けてくださいすることができ、その後、なぜ我々は方法1を持っている必要があります。 無限のワイルドカードを使用して解決できる問題であり、汎用メソッドタイプ(たとえば方法2)を使用して解決できない問題を意味しますか?
メソッド2の 'list'に要素を追加できます。方法1ではできません。 –
ありがとう@AndyTurnerしかし、要素の追加が唯一の問題ならば、コードスニペット以下に変更することができます public static void methodWithType(List super T> list){ for(Object obj:list) { System.out.println(obj); } } –
MishraJi
これは唯一の問題ではありません。これはコンパイラが安全を保証できるように、型変数が十分な情報を提供するという問題の単なる例です。 –