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我不想摆脱警告,我想了解不安全的操作.
谢谢!
这意味着强制转换将检查返回的对象是否属于Map某种类型,但由于类型擦除,它将无法检查其内容的任何内容.在执行时,地图是地图是地图......所以如果有人把一个代码Map<Integer, String>放入你的会话中,那么这行代码仍然会成功.当您尝试使用其中一个条目时,例如通过迭代条目并获取键和值,您只会收到错误.
欢迎来到古怪的Java泛型世界:(