コンストラクタ「のArrayList(java.util.Listの<T>)を解決できません `Javaで

Jaquarh:

私は自分のアプリケーションがのインスタンスを作成するために使用するライブラリの配列リストを作成しようとしています。私は、私は同じを使用できるように、彼らは拡張抽象クラスを持っていますClass<T>

abstract class Library {}
abstract class SomeLib extends Library {}

私は今、この配列リストを作成したい、これは私がそれをやろうとしています方法です。

public ArrayList<Class<Library>> libs = new ArrayList<Class<Library>>(
        Arrays.asList(SomeLib.class)
);

しかし、私はこのエラーを取得します:

`コンストラクタ「のArrayList(java.util.Listの)を解決することはできません

何が私が間違っているのでしょうか?

ジョン・クーン:

私はすでにコメントで述べたように、使用しますArrayList<Class<? extends Library>>

その理由は単純です:SomeLib.classタイプがあるClass<SomeLib>ではありません、Class<Library>

あなたは(あなたがやりたいように)のサブクラスを可能にすることにより、一般的なAビット緩いを作るしかし、もしClass<SomeLib>一致したClass<? extends Library>、とすべてが正常に動作します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=317563&siteId=1