簡體   English   中英

Java-實例化泛型類型的類

[英]Java - Instantiating generic typed class

我有一個課

public class Example<T> {...}

我想用我知道的特定類型類實例化類Example。 偽代碼看起來像這樣

public Example<T> createTypedExample(Class exampleClass, Class typeClass) {
  exampleClass.newInstance(typeClass); // made-up
}

這樣才能給我同樣的結果

Example<String> ex = new Example<String>();
ex = createTypedExample(Example.class, String.class);

Java可能嗎?

因為,返回類型(即新實例的類)是固定的; 無需將其傳遞給方法。 而是,將static工廠方法添加到您的Example類中,如下所示:

public class Example<T> {

    private T data;

    static <T> Example<T> newTypedExample(Class<T> type) {
        return new Example<T>();
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

現在,這是創建通用Example實例的方法。

// String
Example<String> strTypedExample = Example.newTypedExample(String.class);

strTypedExample.setData("String Data");
System.out.println(strTypedExample.getData()); // String Data

// Integer
Example<Integer> intTypedExample = Example.newTypedExample(Integer.class);

intTypedExample.setData(123);
System.out.println(intTypedExample.getData()); // 123

暫無
暫無

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

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