簡體   English   中英

如何在Java中定義類型的通用列表?

[英]How to define a generic List of types in java?

我已經實現了具有以下簽名的java方法:

public <T> T getItemValue(String itemName, Class<T> itemType)  {
...
}

這允許客戶端以以下方式調用該方法,以獲取例如String或Integer類型的值:

String s = itemCol.getItemValue("_name", String.class);
int i = itemCol.getItemValue("_count", Integer.class);

新的微配置文件Config 1.3 API的Config接口也使用這種方法簽名。

我的問題是如何(或是否)可以使用類型為List<String>的類型的List來調用該方法,以獲取例如String對象的List。 我無法提出客戶電話。 我嘗試過這樣的事情:

List<String> list = itemCol.getItemValue("_count", List<String.class>);

但這似乎不是正確的語法。

編輯:

由於以下響應,我決定添加一個單獨的方法來獲取特定類型的列表。

public <T> List<T> getItemValueList(String itemName, Class<T> itemType) {
        ...
}

使用此附加方法簽名,客戶可以決定天氣以獲取單個值或特定類型的列表。

類型參數被刪除,它們在運行時不存在。 在運行時沒有List<String>這樣的東西,只有List

因此,表達List<String>的反射代理的正確方法是…您不能。 您只能為List表示反射型代理,就像對其他任何類List.class

不與List<String.class> 您需要使用TypeToken來獲得這種通用信息。 您還需要更改代碼以使用Type而不是Class

暫無
暫無

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

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