首页 > 解决方案 > java中构造TreeSet时没有定义类型参数怎么办?

问题描述

未定义类型参数时的预期结果是什么,例如以下代码 - 代码段 1:

java.util.Set set = new java.util.TreeSet();
set.add(2);

代码段 2:

java.util.Set set = new java.util.TreeSet();
set.add("2");

代码段 1 和 2 运行良好。代码段 3:

java.util.Set set = new java.util.TreeSet();
set.add("2");
set.add(3);

代码段 4:

java.util.Set set = new java.util.TreeSet();
set.add(2);
set.add("3");

代码段 3 和 4 分别失败并出现以下错误:

Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer
Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String
    

那么java是否将第一个添加作为集合的默认类型?另外,错误似乎很奇怪,不应该是代码段3的整数到字符串和代码段4的字符串到整数吗?

此外,如果未定义类型参数,其他集合会怎样?

标签: javacollectionsset

解决方案


推荐阅读