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

时间:2011-07-20 16:11:03

标签: java generics methods

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

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

3 个答案:

答案 0 :(得分:52)

是的,你可以。

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);

答案 1 :(得分:3)

旧问题,但我想这是在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

答案 2 :(得分:1)

简单的解决方案!

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