Java未经检查的操作转换为泛型

gpo*_*pol 4 java generics unsafe unchecked

我想知道为什么以下发出关于不安全/未检查操作的警告:

Map<String, ProxySession> sessionMap = (Map<String, ProxySession>) se.getSession().getServletContext().getAttribute("myattribute");
Run Code Online (Sandbox Code Playgroud)

演员错了吗?我无法理解我在这里缺少的东西.

PS我不想摆脱警告,我想了解不安全的操作.

谢谢!

Jon*_*eet 6

这意味着强制转换将检查返回的对象是否属于Map某种类型,但由于类型擦除,它将无法检查其内容的任何内容.在执行时,地图是地图是地图......所以如果有人把一个代码Map<Integer, String>放入你的会话中,那么这行代码仍然会成功.当您尝试使用其中一个条目时,例如通过迭代条目并获取键和值,您只会收到错误.

欢迎来到古怪的Java泛型世界:(