在Java 8中,我正在尝试将Map<String, ? extends Object>
投射到Map<String, Object>
。我认为考虑到输入类型的约束(所有?必须实现Object),它会是安全的,但我得到一个未经检查的强制警告。
知道我错的地方吗?有清洁的解决方案谢谢你的帮助!
答案 0 :(得分:5)
此演员表不安全。特别是:
Map<String, ? extends Object> before;
before.put("foo", "example"); // <-- illegal
Map<String, Object> after;
after.put("foo", "example"); // <-- legal
观察String
不是? extends Object
的子类,因为您不知道?
,但它是更一般Object
的子类,因此第二个电话没问题。