web-dev-qa-db-ja.com

Javaメソッドのパラメーターとしてのジェネリック型

これに似たものを作成することは可能だと思いますか?

private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
    array_test.add(new GenericObject()); // instance of GenericClass
    return array_test;
}
25
Pierre Guilbert

はい、できます。

private static <T> List<T> pushBack(List<T> list, Class<T> typeKey) throws Exception {
    list.add(typeKey.getConstructor().newInstance());
    return list;
}

使用例:

List<String> strings = new ArrayList<String>();
pushBack(strings, String.class);
57

古い質問ですが、これがJava8 +でそれを行う好ましい方法だと思います

public <T> ArrayList<T> dynamicAdd(ArrayList<T> list, Supplier<T> supplier) {
  list.add(supplier.get());
  return list;
}

次のように使用できます。

AtomicInteger counter = ...;
ArrayList<Integer> list = ...;

dynamicAdd(list, counter::incrementAndGet);

これはリストに数値を追加し、AtomicIntegerのincrementAndGetメソッドから値を取得します

このようなメソッド参照としてコンストラクターを使用することも可能です:MyType::new

5
Aarjav

簡単な解決策!

private <GenericType> ArrayList increaseSizeArray(ArrayList array_test, GenericType genericObject)
{
    array_test.add(new genericObject());
    return ArrayList;
}
1
user5536522