我有一個方法如何通過課堂獲得實例?
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);
}
幫我... .....
我有一個方法如何通過課堂獲得實例?
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);
}
幫我... .....
像你需要反思的小店
import java.reflect.*; ... Class klass = obj.class; Object newObj = klass.newInstance(); return (T)newObj;
注意:由內存寫入,所以api可能會略有不同。
如果該類t
有一個無參數的構造函數,那麼Class.newInstance()方法將做什麼是需要:
public static <T> T createObject(Class<T> t)
throws InstantiationException, IllegalAccessException {
return t.newInstance();
}
請注意,您必須要麼傳播或處理從東西出現像檢查的異常:
t
對象表示接口或一個抽象類,t
類不具有無參數構造,或t
類或其無參數構造函數不可訪問。如果你想管理的參數,你可以這樣做:
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();
}
不需要進口,你沒有使用任何來自那裏。你只需要一個方法:Class.newInstance()。 – 2010-08-19 03:56:47