拡張for文のちょっと便利な使い方
Java 7 以上で確認した.次のようなクラスA, B, Xがあるとする。
public class A {
}
public class B<T> extends A {
}
public class X {
public static <Z extends A> java.util.List<Z> get(Class<Z> clazz) {
// dummy implementation
return new ArrayList<Z>(); // ArrayList<>() is also valid in case of Java 8.
}
}
このとき、X#get()
を用いてBのインスタンスのリストを取得するために以下のように書こうとすると、
List<B<?>> list = X.get(B.class);
次のコンパイルエラーになる。List<B<?>>
へのキャストもできない。
Type mismatch: cannot convert from List<B> to List<B<?>>
ところが、以下のように拡張For文を用いてリストの要素を1つずつ取得すると、コンパイルエラーも警告も出なくなる。
フレームワークを作成する場合に少し便利なイディオムである。
for (B<?> b : X.get(B.class)) {
// do something with b.
}
Author And Source
この問題について(拡張for文のちょっと便利な使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/daylife/items/48c769fd9f479dfa6661著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .