List中添加元素存在的问题
- 往集合当中存储元素,可以存任何类型元素
//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);
没有泛型存在的问题
泛型概念
什么是泛型
广泛通用的类型,一开始还不确定是什么类型,在使用的时候,才能确定是什么类型,
- 在开始定义类的时候,留一个插口
- 在创建对象的时候,再去插入对应的类型
泛型注意点
- 泛型前后类型必须得要保持一致
- 从 JAVA7 开始,后面的类型可以不写 new ArrayList<>(); 菱形语法
- 泛型是没有继承
- 泛型其实是一个语法糖。(本质还是Object 内部其实 还是要做强转)
没有使用泛型的List
泛型类
在类上面定义的泛型,在创建对象的时候,要指明泛型的类型, 泛型当中定义的泛型只能用在普通方法上面,不能使用在静态方法上面,静态方法是直接使用类名调用,泛型是在创建对象的时候,才去指定类型
泛型方法
就是在方法上面添加了泛型,单独对一个方法上面声明泛型,方法当中定义的泛型
自定义泛型方法
通配符
不知道使用什么类型来接收的时候,可以使用?表示未知,通配符只用来做接收使用,不能做添加操作
泛型的上限
泛型的上限:用来限定元素的类型必须得指定类型(Number)的子类<或者是指定类型或者指定类的子类>
泛型的下限
用来限定元素的类型必须得指定类型(Number)的父类(或者是指定的类)
泛型擦除(把泛型给去掉)
把一个有泛型集合 赋值给了一个没有泛型的集合最后就没有 泛型 -> 泛型擦除(把泛型给去掉)