[英]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.