想请教老师一个关于泛型的问题
来源:4-5 选择练习
Masato1990
2022-08-31 21:23:24
题目第4行代码:
"Set<String>"这里不定义泛型对运行有影响吗?
因为在创建Map对象的时候已经规定了key全部都是String类型,所以这里定义泛型的意义在哪里?
1回答
好帮手慕小黑
2022-09-01
同学你好,
1. 将String类型删除时,for循环编译不会通过,因为编译器检测不到keySet是String类型的集合。
2. 在HashMap中定义泛型是用来约束HashMap中数据的类型的,在keySet方法的返回类型也需要用泛型来约束数据的类型,以保证数据的安全性。
3. 在keySet方法的返回类型,当不用泛型来约束时,在for循环中数据类型是Object,在for循环体中可以强制转换为String类型,不建议强制类型转换,因为当两个类型间转换不兼容时会抛出ClassCastException异常,所以建议使用泛型来约束返回类型。
祝学习愉快!
相似问题