【发布时间】:2011-07-20 16:11:02
【问题描述】:
你认为有可能创造出类似的东西吗?
private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
array_test.add(new GenericObject()); // instance of GenericClass
return array_test;
}
【问题讨论】:
你认为有可能创造出类似的东西吗?
private ArrayList increaseSizeArray(ArrayList array_test, GenericClass) {
array_test.add(new GenericObject()); // instance of GenericClass
return array_test;
}
【问题讨论】:
是的,你可以。
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);
【讨论】:
String)并在其后添加.class,你就有了该类的类型键(类对象)。 String.class 的类型为 Class<String>。
static <T> void method(...)的构造
老问题,但我想这是在 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
【讨论】:
简单的解决方案!
private <GenericType> ArrayList increaseSizeArray(ArrayList array_test, GenericType genericObject)
{
array_test.add(new genericObject());
return ArrayList;
}
【讨论】: