1.泛型类
public class Test<T>{
public T t;
public T test(){
return (T) " ";
}
}
2. 泛型方法
public class Test{
public <T> T test(T t){
List<Object> list=new ArrayList<>();
list.add(t);
return (T)list;;
}
}
3. 泛型 实例方法带参数和不带参数 ,静态方法带参数和不带参数
public class Test{
public T t;
public T test(){
return (T) " ";
}
public static<T> void build (){
}
public static<T> void build (T t){
}
public T test(T t){
List list=new ArrayList<>();
list.add(t);
return (T)list;;
}
}
总结: <T> 声明类型参数,当声明类型参数的时候才可以使用类型参数。
泛型方法中,会采用自己所声明的类型参数,不会被泛型类的类型参数所干扰。
通配符:
? 不确定类型,和T 不同的是,T 在第一次传入类型的时候就将类型确认下来了,该类或者该方法的返回值的类型就确认为T了。而通配符?没 有将类型确定下来,每次无论传什么类型都可以。在拿取真实类型的时候,使用的是通配符?时候需要进行强转拿取,而T 不需要。
?extends T 上界通配符 指定该类型的上限范围 传入的元素类型为T 或者为T的子类。这个时候就将这个类型的父类型确定了下来,那么这个类型的对象肯定会继承得到父类中可继承的方法和属性。
?super T 下界通配符 指定该类型的下限范围 传入的元素类型为T 或者为T的父类。这