簡體   English   中英

用於返回類的不同泛型類型的實例的單個方法

[英]Single method to return an instance of different generic type of a class

我有如下通用類:

MyClass<T>
{
    ....
}

現在,我要創建一個通用方法,例如public MyClass<T> getMyClassInstance(Type t){...} ,在其中我傳遞了一個類型,該方法給出了具有該類型的MyClass實例。


請參閱以下示例。

  1. 如果按以下方式調用此方法getMyClassInstance(Integer_type) ,則它將返回MyClass<Integer>實例。

  2. 同樣,如果我按以下方式調用此方法getMyClassInstance(String_type) ,則它將返回MyClass<String>實例。

我應該怎么寫這個方法? 如果無法完成,是否有其他替代方法或其他更好的方法來執行類似的操作?

對於這種簡單的應用程序,您甚至不需要傳遞TypeClass參數。 考慮以下:

public <T> List<T> getList() {
    return new ArrayList<>();
}

要使用它很簡單:

List<Integer> lst = getList();

編譯器將推斷所需列表的類型。

請注意,通過傳遞Type參數,您將獲得更大的靈活性,尤其是在您可能事先不知道要返回哪種List情況下。 但是這種語法,恕我直言,讀起來更自然, 可能適合您想做的事情。 (我說“可以”,因為您沒有提供很多細節...)

Type類必須在上面帶有type參數: Type<T> ,因此您可以聲明

<T> MyClass<T> getMyClassInstance(Type<T> t);

如果您無法做到這一點,那么編譯器是盲目的。

暫無
暫無

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

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