我有一个方法
public static <T> T createObject(Class<T> t){
}
你知道,我想得到一个T的实例。
我知道这可以实现,因为:
public <T> T find(Object id, Class<T> type) {
return (T) this.em.find(type, id);
}
帮助我........
答案 0 :(得分:3)
如果类t
具有no-args构造函数,那么Class.newInstance()方法将执行所需的操作:
public static <T> T createObject(Class<T> t)
throws InstantiationException, IllegalAccessException {
return t.newInstance();
}
请注意,您必须传播或处理由以下内容引起的已检查异常:
t
对象表示接口或抽象类t
类没有no-args构造函数,或t
类或其no-args构造函数。答案 1 :(得分:2)
听起来像你需要反思
import java.reflect.*; ... Class klass = obj.class; Object newObj = klass.newInstance(); return (T)newObj;
注意:从内存写入,所以api可能会略有不同。
答案 2 :(得分:1)
如果您想要管理参数,可以这样做:
public static <T> T instantiate(Class<T> clazz, Object ... parameters) throws Exception {
Validate.notNull(clazz, "Argument null pour 'classe' !");
if (!ArrayUtils.isEmpty(parameters)) {
Class<?> [] parametersType = new Class<?>[parameters.length];
for(int i=0 ; i<parameters.length ; i++) {
parametersType[i] = parameters[i].getClass();
}
return clazz.getConstructor(parametersType).newInstance(parameters);
}
return clazz.newInstance();
}