基本使用:
1、用泛型表示类
public class Template {
public static void main(String[] args) {
Tem<String> t1=new Tem<>();
t1.setValue("hello");
System.out.println(t1.getValue());
}
}
class Tem<T>{
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
2、用泛型表示方法
public class Template {
public static void main(String[] args) {
Tem t1=new Tem();
t1.function("hello");
}
}
class Tem{
public <T> void function(T value){
System.out.println(value.getClass().getName());
}
}
3、泛型通配符
package JavaCore;
import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class Template {
public static void main(String[] args) {
List<Animal> animals =new ArrayList<>();
List<Cat> cats =new ArrayList<>();
List<WhiteCat> whiteCats =new ArrayList<>();
Animal animal = new Animal();
Cat cat = new Cat();
WhiteCat whiteCat = new WhiteCat();
animals.add(animal);
cats.add(cat);
whiteCats.add(whiteCat);
//测试f1可以匹配任何类型
System.out.println(f1(animals).get(0).getClass().getName());
System.out.println(f1(cats).get(0).getClass().getName());
System.out.println(f1(whiteCats).get(0).getClass().getName());
//输出结果:
//JavaCore.Animal
//JavaCore.Cat
//JavaCore.WhiteCat
//测试f2
//System.out.println(f2(animals).get(0).getClass().getName()); //报错
System.out.println(f2(cats).get(0).getClass().getName()); //它自己
System.out.println(f2(whiteCats).get(0).getClass().getName()); //它的子类
//输出结果:
//JavaCore.Cat
//JavaCore.WhiteCat
//测试f3
System.out.println(f3(animals).get(0).getClass().getName()); //它的父类
System.out.println(f3(cats).get(0).getClass().getName()); //它自己
//System.out.println(f3(whiteCats).get(0).getClass().getName()); //报错
//输出结果:
//JavaCore.Animal
//JavaCore.Cat
}
//匹配任意类型
public static List<?> f1(List<?>list){
return list;
}
//上界通配符 <? extends ClassType> 匹配ClassType的所有子类包括它本身
public static List<? extends Cat> f2(List<? extends Cat>list){
return list;
}
//下界通配符 <? super ClassType> 匹配ClassType的所有父类包括它本身
public static List<? super Cat> f3(List<? super Cat>list){
return list;
}
}
class Animal{
}
class Cat extends Animal{
}
class WhiteCat extends Cat{
}