Collection和Map
在定义类或接口时,需要操作数据,但不清楚使用者需要操作哪种数据
定义---类,接口,变量,方法
在定义时可以用泛型来代表任意的类型,但是在使用时,必须传递实际类型
类:
class test<E>{}
接口:
interface Test<T>{
void test(T t){}
}
类继承接口时,可以指定接口的类型,或指定当前类为泛型,也可以使用匿名内部类实现泛型接口
泛型方法
必须在方法前使用<T>来表示需要使用泛型
class Father{
public<T> void test(T t){
System.out.println(t);
}
}
使用:
Father a = new Father();
ArrayList<String> name = new ArrayList<>();
name.add("jack");
a.test(name);
java的集合类型不是自动变型
?通配符
当使用一个泛型时,如果还不确定到底是什么类型,可以用?来表示任意类型
List<?>
设置泛型的上限 extends
指定传递过来的类型必须是Food的子类(上限)
<T extends Food>
设置下限用super