繁体   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