簡體   English   中英

將String,ArrayList等對象添加到List <Object>

[英]Adding String,ArrayList, etc objects to List<Object>

我有一個數據結構Map < String, Map < ConfigKey, ConfigValue<Object > > > 這就像一個Map “命名空間”,以Map的“鑰匙”,以“價值”。 我的解析器讀取配置文件,並動態決定該值應視為String還是ArrayList

我看到將ArrayList添加到上述數據結構時出錯。 請告訴我如何解決此問題。

private Map<String, Map<ConfigKey, ConfigValue<Object>>> configuration = new HashMap<String, Map<ConfigKey, ConfigValue<Object>>>();
:
configuration.get(groupName).put(new ConfigKey(key), new ConfigValue<Object>(override, value)); // works
:
configuration.get(groupName).put(new ConfigKey(key), new ConfigValue<List>(override, Arrays.asList(values))); // does not work
ConfigValue<List> is not a ConfigValue<Object>.

閱讀有關Java一般編程中 協變和逆變的更多信息

這會解決它

private Map<String, Map<ConfigKey, ConfigValue<? extends Object>>> configuration = new HashMap<String, Map<ConfigKey, ConfigValue<? extends Object>>>();

要么

Map<String, Map<ConfigKey, ConfigValue<?>>> 

並且請避免在代碼中使用原始類型

暫無
暫無

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

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