通用类型作为Java方法中的参数

Pie*_*ert 30 java generics methods

你认为有可能创造类似的东西吗?

private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
    array_test.add(new GenericObject()); // instance of GenericClass
    return array_test;
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ung 61

是的你可以.

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

用法示例:

List<String> strings = new ArrayList<String>();
pushBack(strings, String.class);
Run Code Online (Sandbox Code Playgroud)

  • 你如何调用这个方法?我不知道 Class&lt;T&gt; typekey 应该是什么。我找不到任何相关信息。如果您有任何阅读建议,欢迎提出。感谢您的答复! (2认同)

Aar*_*jav 6

老问题了,但我想这是在Java8 +中这样做的首选方式

public <T> ArrayList<T> dynamicAdd(ArrayList<T> list, Supplier<T> supplier) {
  list.add(supplier.get());
  return list;
}
Run Code Online (Sandbox Code Playgroud)

它可以这样使用:

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

dynamicAdd(list, counter::incrementAndGet);
Run Code Online (Sandbox Code Playgroud)

这将在列表中添加一个数字,并从AtomicInteger的incrementAndGet方法中获取值

也可以使用构造函数作为方法引用,如下所示: MyType::new