簡體   English   中英

如何通過課程獲取實例?

[英]How I can get a instance by a class?

我有辦法

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

幫我........

如果類t具有無參數構造函數,則Class.newInstance()方法將執行所需的操作:

 public static <T> T createObject(Class<T> t) 
 throws InstantiationException, IllegalAccessException {
    return t.newInstance();
 }

請注意,您必須傳播或處理由以下原因引起的檢查異常:

  • t對象表示接口或抽象類,
  • t類沒有無參數構造函數,或者
  • t類或其no-args構造函數不可訪問。

像你這樣的聲音需要反思

import java.reflect.*;
...
Class klass = obj.class;
Object newObj = klass.newInstance();
return (T)newObj;

注意:是從內存寫入的,因此api可能會略有不同。

如果要管理參數,可以執行以下操作:

public static <T> T instantiate(Class<T> clazz, Object ... parameters) throws Exception {
    Validate.notNull(clazz, "Argument 'clazz' null!");
    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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM