2022-08-01第十组薛雯匀
1.今天讲了枚举,理解起来不难实际应用就感觉很难。
Java学习笔记
JavaSE高级部分
1.泛型
2.枚举
3.多线程
4.集合(数据结构,树,二叉树,红黑树,B+树,B-树)
5,IO流(文件)
6.网络通信Socket(Tomcat)
7.反射和注解
泛型:
之前写的超级数组中要么只能存数字,要么啥都能存
利用泛型就能解决这个问题
什么是泛型?
泛型是广泛的、普通的类型
泛型能够帮助我们把【类型明确】的工作推迟到创建对象或者调用方法的时候。
意思就是说:我定义的时候,不需要考虑这个数组到底要存什么类型。
创建这个超级数组对象的时候把里面要存的数据的类型确定下来
泛型的修饰:
- 泛型类
- 泛型方法
- 泛型接口
泛型类把泛型定义在类上,用户在使用类的时候才能把类型给确定
具体的使用方法使用<>加上一个未知数,通常用T K V E等大写字母表示
实际上用什么都可以
当我们在一个类后面加上了泛型<T>,这个T就是一个数据类型,既然T就是一个数据类型,那我们就可以拿过来用。
如果一个泛型类在创建对象的时候没有指定泛型类型
默认还是Object类型
在使用这个类的时候,去确定泛型类型
这样这个超级数组superArray1就只能存Employee类型
SuperArray<Employee> superArray1 = new SuperArray<>();
在jdk7以后,可以省略等号右边的泛型声明,<>必须得写,规范
泛型方法:
我们如果只关心某个方法,可以不定义泛型类,只定义一个泛型方法
泛型方法不一定要在泛型类里,泛型类里不一定要有泛型方法
在定义泛型方法是要首先定义泛型类型
定义在方法中间,泛型的使用处之前
使用泛型方法,最好要结合返回值,和Object一样。
继承关系
泛型类在继承的时候是可以明确父类的泛型的
- 父类是一个泛型类,子类可以是泛型类也可以不是泛型类
- 如果说子类也像是泛型类
- 永远记住!泛型的声明只能在当前类名后或者方法中间,而且声明的泛型是
在子类继承父类时,子类泛型和父类泛型都写出来的情况下,是父跟子不是子跟父
4.如果在继承的时候没有写出任何泛型,当前子类就不是泛型类
如果在一个泛型类中,尽量就不要使用泛型方法
泛型方法多数都是出现在非泛型类。
静态泛型方法:
- 静态方法如果是泛型方法,泛型的声明必须写
- 因为静态结构属于类,不属于某个对象。
类型擦除:
为了兼容性,使用原始类型(没有泛型)是可以的
泛型刚刚出现的时候,还存在大量的不适应泛型的代码
保证代码的兼容性,将参数化类型的实例传递给设计用于原始类型的方法必须
为了
Java的泛型语法式在编译期这个维度上实现的
正常来说在生成的字节码文件中,不包含泛型的类型信息的。
在JVM中看到的只是superArray,由泛型附加的类型信息对JVM是看不到的
可以理解为,泛型的本质就是让程序员在编写代码是遵守一个规则
比如superArray:在确定了泛型之后,这个超级数组就统一只放同一类型的参数,
如果放入其他类型编译不通过。
泛型不能是基本数据类型
方法的重载:a,同一个类里 b.方法名相同 c.参数不同
原理:类型擦除
多态上:
泛型的应用场景:
- 发生在父类或者接口中,起到的是一个规范的作用,对里面的数据没有明确的要求
- 容器类,(超级数组,链表,队列,栈)
当类型无法确定时,使用泛型
全类名:带包的
枚举的静态导入:
Import static com.jsoft.afternoon.Season.*
枚举的命名规则:所有的枚举类要以Enum结尾
提供公有的获取实例的静态方法
浙公网安备 33010602011771号