一、泛型类
package GenericsDemo1;
public class GenericsDemo {
public static void main(String[] args) {
MyArrayList<String> list = new MyArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println(list);
MyArrayList<Integer> list1 = new MyArrayList<>();
list1.add(123);
list1.add(234);
list1.add(345);
list1.add(456);
System.out.println(list1.get(0));
System.out.println(list1);
}
}
package GenericsDemo1;
import java.util.Arrays;
//编写一个类时,如果不确定类型,那么这个类就可以定义为泛型类
public class MyArrayList <E>{
Object [] obj = new Object[10];
int size;
/*
E:表示时不确定的类型,该类型在类名后面以及定义过了
e:形参的名字,变量名
*/
public boolean add(E e){
obj[size]=e;
size++;
return true;
}
public E get(int index ){
return (E)obj[index];
}
@Override
public String toString() {
return Arrays.toString(obj);
}
}
二、泛型方法
package GenericsDemo1;
import java.util.ArrayList;
public class GenericsDemo1 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
ListUtil.addAll(list,1,2,3,4,45,5,23,2);
System.out.println(list);
}
}
package GenericsDemo1;
import java.util.ArrayList;
public class ListUtil {
private ListUtil(){}
//类中定义一个静态方法addAll,用来添加多个集合的元素。
/*
参数一:集合
参数二;~最后:要添加的元素
*/
public static <E> void addAll(ArrayList<E> list,E ...e){
for (E ex : e) {
list.add(ex);
}
}
}
三、泛型接口
public class MyArrayList2 <E> implements List<E> {}
四、泛型的通配符---?
? extend E
? extend E
五、总结