目录
- 泛型
- 泛型类
- 泛型接口
泛型
定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>
),称为泛型类、泛型接口、泛型方法、它们统称为泛型
作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力!这样可以避免强制类型转换,以及可能出现的异常
本质:把具体的数据类型作为参数传递给类型变量
泛型类
修饰符 class 类名<类型变量,类型变量,…>{
}
public class ArrayList<E>{...}
如下是自定义泛型类:
多个类型变量
变量继承情况
这里的Cat
类必须继承Animal
类
package generics;public class Demo2 {public static void main(String[] args) {MyArrayList<String> stringMyArrayList = new MyArrayList<>();stringMyArrayList.add("java");System.out.println(stringMyArrayList.get(0));}
}
package generics;public class MyArrayList<K> {private Object[] arr = new Object[10];private int size;public boolean add(K k){arr[size++] = k;return true;}public K get(int index){Object o = arr[index];return (K) o;}}
泛型接口
修饰符 interface 接口名<类型变量,类型变量,...>
{
}
public interface A<E>{}
注意:类型变量建议用大写的英文字母,常用的有:E、T、K、V等
package generics;import java.util.ArrayList;public interface Data <E>{void add(E e);ArrayList<E> getData(String name);}
package generics;import java.util.ArrayList;public class Demo4 implements Data<Cat> {@Overridepublic void add(Cat cat) {}@Overridepublic ArrayList<Cat> getData(String name) {return null;}
}
这里也支持变量继承