簡體   English   中英

Java中的通用映射

[英]Generic map in java

我有一種方法,希望在參數中有一個通用映射:

public void someMethod(Map<String,?> mapParameter){
    ...
}

我的調用此方法的實現對“?”有多個可能的值 通用參數。 例如,有時“?”中的值 將為Integer,其他將為String,Boolean。

是否存在某種方法來聲明可以接受我的值的完全通用的HashMap,並將其傳遞給“ someMethod”方法?

我嘗試將值提取到類“ IntegerValueDTO”,接收String值中的值並將其轉換為especific類型。 我創建的所有這些“ valueDTO”類都從“ defaultValue”擴展而來。 這樣,我實現了這張地圖:

Map<String, ? extends DefaultValue> map = new HashMap<String, ? extends DefaultValue>();

但是 ,someMethod方法不是來自我的應用程序,而是來自框架,那么我沒有控制權來實現。 然后以這種方式聲明我的映射,他將生成一個映射"Map<String, some instance of DefaultValue>" ,框架崩潰。

任何幫助都將受到歡迎。

Map<String, ? extends Object> map = new HashMap<String, ? extends Object>();

如果該方法返回您希望在應用程序中使用的某些值,則可以使用反射來查看它返回的值並將其強制轉換為該特定對象。

沒有像DefaultValue這樣的Wrapper類,您將無法做到這一點。

原因是Integer,Character,Long等的Wrapper類不擴展Object。

暫無
暫無

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

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