想请教老师一个关于泛型的问题

来源: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异常,所以建议使用泛型来约束返回类型。

祝学习愉快!

0

0 学习 · 9886 问题

查看课程