千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

泛型的学习与理解
1.为什么要使用泛型?
集合的特点是弥补了数组中的某一个不足:数组中元素的数据类型必须是一致的。
在开发中,更加倾向于让集合只存一种数据类型,单一职责原则。
通过使用泛型,约束了集合中元素的数据类型,此时防止数据类型的多样化导致程序的错误。
2.泛型的好处:
- 泛型可以在编译时帮助我们检查数据类型
- 泛型可以减少数据类型转换,自动转换
3.泛型的形式:
示例:LinkedList<Integer> list=new LinkedList<Integer>();
<Integer>就是泛型,可以在<>中指定集合的数据类型,其中后一个<>中的数据类型是可以省略的
4.Java和C# 中泛型的区别:
- Java的泛型是可擦除的,简单地说,java的泛型是只存在于源码中,编译后就没有了,是一种语法糖。(语法糖:计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性)
- C#的泛型编译后仍然是泛型。(两者的底层实现是完全不同的)
补充说明:两种语言中的泛型的区别的原因是Java是一门向下兼容的语言,要保证无论如何更新版本,都可以运行之前版本的代码,Java语言的开发人员为了在1.5版本中推出泛型并兼容之前的4个版本,才专门设计了现在的这种实现形式;而C#在推出泛型时才更新到第二个版本,使用人数不多,所以语言的开发者直接不需要考虑版本1的使用者,推出全新的泛型即可。
5.个人对泛型的理解:
用通俗的语言讲,开始写代码的时候不知道集合中具体放的什么类型的数据,但又要对数据类型进行限制,所以使用泛型类,这样后面实际调用该集合的时候再指定限制的类型即可。
又因为开始在数据类型不确认的时候需要写方法,但是泛型类的数据无法进行实例化(因为java中的泛型是可擦除的,是一种语法糖),所以通过Class类new出对象clazz用在方法中作为参数,同时对Class通过泛型进行数据类型限制,保证和前面new的集合中的数据类型一致。
最终实现在不确定数据类型的情况下对集合中的数据类型进行限制,并可以在不确定数据类型的情况下写方法。