在Java 8中,我试图将Map<String, ? extends Object>
铸造为Map<String, Object>
。尽管我对输入类型的限制(所有?
有什么想法我在哪里推理?有干净的解决方案吗?感谢您的帮助!
此演员不安全。特别是:
Map<String, ? extends Object> before;
before.put("foo", "example"); // <-- illegal
Map<String, Object> after;
after.put("foo", "example"); // <-- legal
观察String
不是? extends Object
的子类,因为您不知道?
,但它是更通用的Object
的子类,因此第二个调用是可以的。