字面量赋值

当我们将一个比接口声明的变量多的对象直接赋值给声明了该接口的变量,会报错;

但是可以先将这个对象赋值给别的变量,再将另一个变量赋值给声明类型的变量

原因是:将变量的引用赋值给声明类型的变量,会进行擦除操作,会略过多出的变量

枚举类型

枚举其实就是将一组可能出现的值,一个个列举出来,定义在一个类型中,这个类型就是枚举类型

枚举允许开发者定义一组命名常量,可以是数字、字符串类型(写的是数字就是数字,字母就是字符串)

默认情况下,他们是有值的,且从0开始

修改值的话就,如果改的是第一个,后续会跟着递增

泛型 - 图1

泛型

类型参数化

在定义这个函数时,我们不决定这些参数的类型

而是让调用者以参数的形式告知,我这里的参数的类型

我们需要在这里使用一种特性的变量 - 类型变量,它作用于类型,而不是值

泛型 - 图2

第一种调用:直接写是什么类型 通过<类型>的形式

泛型 - 图3

第二种调用:类型推导

泛型 - 图4

我们可以传入多个类型:

泛型 - 图5

泛型接口

在定义接口时我们也可以使用泛型

接口是没有类型推导的,定义变量时需要手动声明

泛型 - 图6

泛型类

可以自动推导,因为new调用了构造函数,又调用函数就可以自动推导

泛型 - 图7

泛型约束

可以通过extends来对泛型做约束

泛型 - 图8