そのような構文を持つことの使用法を知りたいです。以下のような簡単なプログラムを書いてみました。
public class Sample{
public static void main(String[] args) {
Class<? extends Collection> someCollectionClass = someMethod();
}
public static ArrayList someMethod() {
return new ArrayList();
}
}
コンパイルエラーが表示される理由、
- Collection is a raw type. References to generic type Collection<E> should be
parameterized
- Type mismatch: cannot convert from ArrayList to Class<? extends Collection>
ここで、そのクラスは、コレクションを拡張するクラスを期待します (実際には、それが受け入れるオブジェクトを知っていますか?)。では、ArrayList の何が問題なのですか?
また、何かを次のように宣言した場合、有効なif構文ですかClass<? extends T>