小编Rut*_*jaG的帖子

使用HashMap时,Java 11中的ClassCastException但不是Java 8中的ClassCastException?

请看一下我的代码:

Object longL = 2548214;
Map<String, Object> map = new HashMap<String, Object>(1);
map.put("LongNumber", longL);
List<Map<String, Object>> returnlist = new ArrayList(10);
returnlist.add(map);

List<Object> versionMap1 = new ArrayList(10);
versionMap1.add(returnlist);

List<Map<String, String>> docIdVersionNameMap = new ArrayList<>();
docIdVersionNameMap.addAll((List<Map<String, String>>)versionMap1.get(0));

Map<String, String> versionDoc=docIdVersionNameMap.get(0);

Map<String,String> versionDocInfo=new HashMap<String,String>(1);
versionDocInfo.put(versionDoc.get("LongNumber"),"abc");
System.out.println(versionDocInfo.toString());
Run Code Online (Sandbox Code Playgroud)

在Java_1.8_60(编译并运行)中,此代码运行良好,但是在Java 11中编译并运行时,它将引发以下异常:

Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of l
oader 'bootstrap')
        at teststringandlong.Trial.main(Trial.java:35)
Run Code Online (Sandbox Code Playgroud)

Java 11中有关HashMap的变化吗?

java generics hashmap java-8 java-11

7
推荐指数
1
解决办法
730
查看次数

标签 统计

generics ×1

hashmap ×1

java ×1

java-11 ×1

java-8 ×1