博为峰Java技术题 ——JavaSE 泛型Ⅰ
2016-12-06 20:50
351 查看
博为峰小博老师:
[泛型初探]
在泛型出现之前,是这么写代码的:
当然这是完全允许的,因为List里面的内容是Object类型的,自然任何对象类型都可以放入、都可以取出,但是这么写会有两个问题:
1、当一个对象放入集合时,集合不会记住此对象的类型,当再次从集合中取出此对象时,该对象的编译类型变成了Object
2、运行时需要人为地强制转换类型到具体目标,实际的程序绝不会这么简单,一个不小心就会出现java.lang.ClassCastException,即类型转换异常
所以,泛型出现之后,上面的代码就改成了大家都熟知的写法:
这就是泛型。泛型是对Java语言类型系统的一种扩展,有点类似于C++的模板,可以把类型参数看作是使用参数化类型时指定的类型的一个占位符。引入泛型,是对Java语言一个较大的功能增强,带来了很多的好处:
1、类型安全。类型错误现在在编译期间就被捕获到了,而不是在运行时当作java.lang.ClassCastException展示出来,将类型检查从运行时挪到编译时有助于开发者更容易找到错误,并提高程序的可靠性
2、消除了代码中许多的强制类型转换,增强了代码的可读性
3、为较大的优化带来了可能
[泛型初探]
在泛型出现之前,是这么写代码的:
当然这是完全允许的,因为List里面的内容是Object类型的,自然任何对象类型都可以放入、都可以取出,但是这么写会有两个问题:
1、当一个对象放入集合时,集合不会记住此对象的类型,当再次从集合中取出此对象时,该对象的编译类型变成了Object
2、运行时需要人为地强制转换类型到具体目标,实际的程序绝不会这么简单,一个不小心就会出现java.lang.ClassCastException,即类型转换异常
所以,泛型出现之后,上面的代码就改成了大家都熟知的写法:
这就是泛型。泛型是对Java语言类型系统的一种扩展,有点类似于C++的模板,可以把类型参数看作是使用参数化类型时指定的类型的一个占位符。引入泛型,是对Java语言一个较大的功能增强,带来了很多的好处:
1、类型安全。类型错误现在在编译期间就被捕获到了,而不是在运行时当作java.lang.ClassCastException展示出来,将类型检查从运行时挪到编译时有助于开发者更容易找到错误,并提高程序的可靠性
2、消除了代码中许多的强制类型转换,增强了代码的可读性
3、为较大的优化带来了可能
相关文章推荐
- 博为峰Java技术题 ——JavaSE 泛型Ⅲ
- 博为峰Java技术题 ——JavaSE 泛型Ⅱ
- 博为峰Java技术题 ——JavaSE 泛型Ⅲ
- 博为峰Java技术题 ——JavaSE 泛型Ⅰ
- 博为峰Java技术题 ——JavaSE 泛型Ⅳ
- 博为峰Java技术题 ——JavaSE Java 8 新特性
- 博为峰Java技术题 ——JavaSE 重写与重载Ⅱ
- 博为峰Java技术题 ——JavaSE 创建对象Ⅰ
- 博为峰Java技术题 ——JavaSE 避免死锁Ⅰ
- 博为峰Java技术题 ——JavaSE 包(package)Ⅰ
- 博为峰Java技术题 ——JavaSE Java 方法Ⅱ
- 博为峰Java技术题 ——JavaSE Java MySQL连接
- 博为峰Java技术题-JavaSE 之关键字
- 博为峰Java技术题 ——JavaSE 日期时间Ⅱ
- 博为峰Java技术题 ——JavaSE Java NIOⅠ
- 博为峰Java技术题 ——JavaSE Java JDBC数据库查询代码实例
- 博为峰Java技术题 ——JavaSE 避免死锁Ⅱ
- 博为峰Java技术题-JavaSE 之标识符、注释
- 博为峰Java技术题 ——JavaSE 重写与重载Ⅰ
- 博为峰Java技术题 ——JavaSE 类加载器Ⅰ