私の目標は、クラスインスタンスを受け入れる操作を実装することですが、コンクリートが渡されたクラスがCollectionから継承する場合のみです。Genericsを使用してクラス<?>のパラメータを正しく指定する方法
解決できないコードでコンパイラの警告が表示されます。
package com.fun.with.generics;
import java.util.ArrayList;
import java.util.Collection;
public class AcceptTypedClass
{
// Warning here on 'Collection': ... raw type, references should be parameterized.
private static void printCollectionClass(Class<? extends Collection> c)
{
System.out.println(c.getName());
}
public static void main(String[] args)
{
// Warning here on ArrayList: ... raw type, references should be parameterized.
Class<ArrayList> arrayList = ArrayList.class;
printCollectionClass(arrayList);
}
}
私は警告メッセージを理解していますが、次のような欠落型引数を追加して警告を修正すると、エラーが発生します。
Class<ArrayList<?>> arrayList = ArrayList.class;
誰かがこれを説明できますか?問題は、私は上記のコードを書くことができますので、私は警告(とコードの作品)を得ることですか?
「Class <」を試しましたか?コレクション>> '? 'Class'が期待される場所では' ArrayList'を渡していることに注意してください。 –