0%

泛型

List中添加元素存在的问题

  1. 往集合当中存储元素,可以存任何类型元素

1
2
3
4
5
6
7
8
9
//1.往集合当中存储元素,可以存任何类型元素
List list = new ArrayList();
list.add(1);
list.add("abc");
//取出来全是Object
Object obj = list.get(1);
//现在想要使用字符串当中 特有的方法 ,必须得要转回来
String str = (String)obj;
str.substring(0, 1);

没有泛型存在的问题



泛型概念

什么是泛型

广泛通用的类型,一开始还不确定是什么类型,在使用的时候,才能确定是什么类型,

  1. 在开始定义类的时候,留一个插口
  2. 在创建对象的时候,再去插入对应的类型

泛型注意点

  1. 泛型前后类型必须得要保持一致
  2. 从 JAVA7 开始,后面的类型可以不写 new ArrayList<>(); 菱形语法
  3. 泛型是没有继承
  4. 泛型其实是一个语法糖。(本质还是Object 内部其实 还是要做强转)

没有使用泛型的List


泛型类

在类上面定义的泛型,在创建对象的时候,要指明泛型的类型, 泛型当中定义的泛型只能用在普通方法上面,不能使用在静态方法上面,静态方法是直接使用类名调用,泛型是在创建对象的时候,才去指定类型

泛型方法

就是在方法上面添加了泛型,单独对一个方法上面声明泛型,方法当中定义的泛型

自定义泛型方法

通配符

不知道使用什么类型来接收的时候,可以使用?表示未知,通配符只用来做接收使用,不能做添加操作


泛型的上限

泛型的上限:用来限定元素的类型必须得指定类型(Number)的子类<或者是指定类型或者指定类的子类>

泛型的下限

用来限定元素的类型必须得指定类型(Number)的父类(或者是指定的类)

泛型擦除(把泛型给去掉)

把一个有泛型集合 赋值给了一个没有泛型的集合最后就没有 泛型 -> 泛型擦除(把泛型给去掉)

↓赏一个鸡腿... 要不,半个也行↓