1.概述:
没有泛型 集合容器所能接收的类型默认是Object
1.泛型类
/*
* 该类是一个泛型类
* E是一个变量 目前 可代指一切 引用 类型
* 可以再类中 使用 E
*
* 什么时候明确E的具体类型
* 创建该泛型类对象时
* */
public class Fan<E>{
// 成员变量
E e;
// 用e作为形参
public void add(E e){
System.out.println(e);
}
// 返回值
public E get(int index){
return e;
}
// set方法
public void set(E e){
this.e = e;
}
}
2.泛型方法:
public class Demo {
// 调用时候传
public <T> void show(T t){
System.out.println(t);
}
public <T> T get(T t){
return t;
}
}
3.泛型接口:
public interface MyInter<E> {
void show(E e);
}
public class Demo implements MyInter<String>{
//方式1:
@Override
public void show(String s) {
}
}
public class Demo01<E> implements MyInter<E>{
// /方式2
@Override
public void show(E e) {
}
}
4.通配符:
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
ArrayList<Double> list3 = new ArrayList<>();
ArrayList<Number> list4 = new ArrayList<>();
ArrayList<Object> list5 = new ArrayList<>();
useArrayList(list1);
useArrayList(list2);
//?extend 类型 规定了上限 :可以接收该类型 或其子类
useArrayListExtends(list2);
useArrayListExtends(list3);
useArrayListExtends(list4);
// ? super 类型 规定了下限 : 可以接收该类型 或 其父类
useArrayListSuper(list4);
useArrayListSuper(list5);
}
public static void useArrayListExtends(ArrayList<? extends Number> list){
}
public static void useArrayListSuper(ArrayList<? super Number> list){
}
public static void useArrayList(ArrayList<?> list){
}
}