1. ホーム
  2. java

Javaメソッドが任意の型の汎用リストを返すようにするには?

2023-10-05 12:53:19

質問

を返すメソッドを書きたいと思います。 java.util.List を返すメソッドを書きたいと思います。 を型キャストすることなく :

List<User> users = magicalListGetter(User.class);

List<Vehicle> vehicles = magicalListGetter(Vehicle.class);

List<String> strings = magicalListGetter(String.class);

このメソッドのシグネチャはどのようなものでしょうか?こんな感じでしょうか(?)。

public List<<?> ?> magicalListGetter(Class<?> clazz) {
    List<?> list = doMagicalVooDooHere();

    return list;
}

どのように解決するのですか?

private Object actuallyT;

public <T> List<T> magicalListGetter(Class<T> klazz) {
    List<T> list = new ArrayList<>();
    list.add(klazz.cast(actuallyT));
    try {
        list.add(klazz.getConstructor().newInstance()); // If default constructor
    } ...
    return list;
}

一般的な型のパラメータをメソッドに与えることもできます。あなたは、ものを作るには正しいクラスインスタンスが必要であることを正しく推論しています ( klazz.getConstructor().newInstance() ).