栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

类型安全性:未经检查的演员表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类型安全性:未经检查的演员表

好吧,首先,你正在通过新的HashMap创建调用浪费内存。你的第二行完全忽略了对此创建的哈希图的引用,从而使该哈希图可用于垃圾收集器。因此,不要这样做,请使用:

private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");

其次,编译器抱怨你将对象强制转换为,HashMap而不检查它是否为HashMap。但是,即使你要这样做:

if(getApplicationContext().getBean("someMap") instanceof HashMap) {    private Map<String, String> someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");}

你可能仍然会收到此警告。问题是

getBean
return
Object
,所以类型是未知的。将其
HashMap
直接转换为第二种情况不会引起问题(并且在第一种情况下可能不会发出警告,我不确定Java编译器对Java 5发出警告有多学问)。但是,你正在将其转换为
HashMap<String, String>

HashMaps实际上是将对象作为键并将对象作为值的地图(

HashMap<Object, Object>
如果愿意)。因此,不能保证在获取bean时可以将其表示为a,
HashMap<String, String>
因为
HashMap<Date, Calendar>
返回的非泛型表示可以具有任何对象,因此可以将其表示为。

如果代码可以编译,并且你可以执行

String value = map.get("thisString")
;而没有任何错误,则不必担心此警告。但是,如果映射不是完全由字符串键组成的,则ClassCastException在运行时会得到一个,因为泛型无法阻止这种情况的发生。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号