使用するとClass<?> clazz
うまくいきました。
変更されたコードは次のとおりです。
public class Scratch {
public <T> Set<T> method(Class<?> clazz){return null;}
public static void main(String[] args){
Scratch s=new Scratch();
Set<List<String>> list=s.method(List.class);
Set<Map<String,String>> map=s.method(Map.class);
}
}
私を正しい方向に押してくれた@Trarothに感謝します。リストだけでなく、真に一般的な構造をサポートするように彼の答えを修正しました。
編集:あなたは何か悪いことをすることができるので、私はまだ上記の答えに完全に満足していません. 次の例を検討してください。
public class Scratch {
public <T> Set<T> method(Class<?> clazz){return null;}
public static void main(String[] args){
Scratch s=new Scratch();
Set<List<String>> list=s.method(Map.class); //Should've passed List.class, but the compiler doesn't care.
Set<Map<String,String>> map=s.method(Map.class);
}
}
すべてがコンパイルされ、実行時エラーが発生する可能性があります (実装によって異なります)。他にアドバイスあればよろしくお願いします...