2022-08-01第十组薛雯匀

1.今天讲了枚举,理解起来不难实际应用就感觉很难。

Java学习笔记

JavaSE高级部分

1.泛型

2.枚举

3.多线程

4.集合(数据结构,树,二叉树,红黑树,B+树,B-树)

5,IO流(文件)

6.网络通信Socket(Tomcat)

7.反射和注解

 

 

 

泛型:

之前写的超级数组中要么只能存数字,要么啥都能存

利用泛型就能解决这个问题

什么是泛型?

泛型是广泛的、普通的类型

泛型能够帮助我们把【类型明确】的工作推迟到创建对象或者调用方法的时候。

意思就是说:我定义的时候,不需要考虑这个数组到底要存什么类型。

创建这个超级数组对象的时候把里面要存的数据的类型确定下来

泛型的修饰:

  1. 泛型类
  2. 泛型方法
  3. 泛型接口

泛型类把泛型定义在类上,用户在使用类的时候才能把类型给确定

具体的使用方法使用<>加上一个未知数,通常用T K V E等大写字母表示

实际上用什么都可以

当我们在一个类后面加上了泛型<T>,这个T就是一个数据类型,既然T就是一个数据类型,那我们就可以拿过来用。
如果一个泛型类在创建对象的时候没有指定泛型类型

默认还是Object类型

在使用这个类的时候,去确定泛型类型

这样这个超级数组superArray1就只能存Employee类型

SuperArray<Employee> superArray1 = new SuperArray<>();

在jdk7以后,可以省略等号右边的泛型声明,<>必须得写,规范

泛型方法:

我们如果只关心某个方法,可以不定义泛型类,只定义一个泛型方法

泛型方法不一定要在泛型类里,泛型类里不一定要有泛型方法

在定义泛型方法是要首先定义泛型类型

定义在方法中间,泛型的使用处之前

使用泛型方法,最好要结合返回值,和Object一样。

 

继承关系

泛型类在继承的时候是可以明确父类的泛型的

  1. 父类是一个泛型类,子类可以是泛型类也可以不是泛型类
  2. 如果说子类也像是泛型类
  3. 永远记住!泛型的声明只能在当前类名后或者方法中间,而且声明的泛型是

在子类继承父类时,子类泛型和父类泛型都写出来的情况下,是父跟子不是子跟父

4.如果在继承的时候没有写出任何泛型,当前子类就不是泛型类

如果在一个泛型类中,尽量就不要使用泛型方法

泛型方法多数都是出现在非泛型类。

 

 

静态泛型方法:

  1. 静态方法如果是泛型方法,泛型的声明必须写
  2. 因为静态结构属于类,不属于某个对象。

 

 

类型擦除:

为了兼容性,使用原始类型(没有泛型)是可以的

泛型刚刚出现的时候,还存在大量的不适应泛型的代码

保证代码的兼容性,将参数化类型的实例传递给设计用于原始类型的方法必须

为了

Java的泛型语法式在编译期这个维度上实现的

正常来说在生成的字节码文件中,不包含泛型的类型信息的。

在JVM中看到的只是superArray,由泛型附加的类型信息对JVM是看不到的

可以理解为,泛型的本质就是让程序员在编写代码是遵守一个规则

比如superArray:在确定了泛型之后,这个超级数组就统一只放同一类型的参数,

如果放入其他类型编译不通过。

泛型不能是基本数据类型

方法的重载:a,同一个类里  b.方法名相同  c.参数不同

原理:类型擦除

多态上:

泛型的应用场景:

  1. 发生在父类或者接口中,起到的是一个规范的作用,对里面的数据没有明确的要求
  2. 容器类,(超级数组,链表,队列,栈)

当类型无法确定时,使用泛型

全类名:带包的

枚举的静态导入:

Import static com.jsoft.afternoon.Season.*

枚举的命名规则:所有的枚举类要以Enum结尾

提供公有的获取实例的静态方法

posted @ 2022-08-01 22:42  清欢qing  阅读(39)  评论(0)    收藏  举报