1、认识范型
定义:
在定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>),成为范型类、范型接口、范型方法、它们统称为范型。
下述举一个例子,说明范型的好处!!
import java.util.ArrayList;
public class fanxing {
public static void main(String[] args) {
//目标:认范型
ArrayList list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add(new Dog());
for (int i = 0; i < list.size(); i++) {
String t = (String) list.get(i);
System.out.println(t);
}
}
}
//定义一个额外的类
class Dog{}
这时候会报错,我们无法将dog对象强转为String类型,并遍历进行输出
优点1:使用范型,可以规范我们的代码,可以使List添加相同类型的数据,避免了乱七八糟的数据的同时存入,在后续操作过程中出现错误——如下图所示
作用:范型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!
可以避免强制类型转换,及其可能出现的异常
范型的本质:把具体的数据类型作为参数传给类型变量
2、自定义范型类,自定义范型接口,自定义范型方法
一、自定义范型类
package Test1;
//范型类
public class MyArrayList<E> {
private Object[] arr = new Object[10];
private int size ;//记录当前位置
public boolean add(E e) {
arr[size++] = e;
return true;
}
public E get(int index) {
return (E) arr[index];
}
}
package Test1;
public class MyArrayList2<E,T> {
public void push(E e,T t) {
}
}
package Test1;
public class MyArrayList3 <E extends Animal>{
}