1. 泛型
定义类、接口、方法时,同时声明了一个或者多个类型变量,我们之前使用的ArrayList就是使用泛型来规定数据的变量类型,泛型可以分为 泛型类,泛型接口,泛型。
使用别人的泛型类时:
-
如果不声明泛型,则就表示输入的类型是Object
-
泛型的使用只能是引用数据类型,不能是基本数据类型
1.1 泛型类
特点:每一次创建一个成员,就需要确定一次类型
//语法格式
public class 类名<泛型1,泛型2,...> {
}//
//以模仿集合的ArrayList为例
package cn.itcast.afterClass;
public class MyArrayList1<E> {
private Object[] arr = new Object[10];//此处规定数组长度
private int size;
public E get(int index) {
Object object = arr[index];
return (E)object;
}
public void add(E element){
arr[size] = element;
size++;
}
public int getSize() {
return size;
}
}
//MyArrayListTest1类
public class MyArrayListTest1 {
public static void main(String[] args) {
MyArrayList1<String> list = new MyArrayList1<>();
list.add("AA");
list.add("AA");
list.add("AA");
System.out.println(list.getSize());//3
}//main
}
1.2 泛型接口
泛型接口在创建其实现类时,最终发展为两种可能,要么变为普通类,要么变为泛型类。
//泛型类语法
public interface 接口名<泛型1, 泛型2>{
}
//案例:
//创造泛型类接口A
public interface A<T> {
void method(T t);
}
//对于AImpl来说,其在接入接口时声明了数据类型,其变为普通类
public class AImpl implements A<String>{
@Override
public void method