Java泛型
Java泛型
允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时确定。
自定义泛型
泛型类(泛型接口同类);
public class Order<T>{
int id;
T orderT;
public Order(T orderT){
this.orderT = orderT;
}
public T getOrderT(){
return orderT;}
public void setOrderT(T orderT){
this.orderT = orderT;
}
}
//子类继承泛型父类指明泛型,子类使用不带泛型
public class Order1 extends Order<String>{
}
//类型擦除 等同 Order<Object>
public class Order1 extends Order{
}
//此时子类仍然是泛型类,子类使用带泛型
public class Order2<T> extends Order<T>{
}
//,子类在保留父类的泛型基础可以再添加泛型
public class Order3<T,V> extends Order<T>{
}
//可以使用多个泛型,泛型必须是引用类型
public class Order4<T,E,T2>{
}
//部分保留
public class Order5<E,T2> extends Order4<String,E,T2> {
}
//泛型不同的引用对象不能相互赋值
//泛型不指定,会被擦除,默认为Object对象,但不等价Object
//静态方法不能使用泛型,异常类不能使用泛型,数组不能使用泛型
泛型方法
不一定在泛型类中,使用类的泛型的方法不为泛型方法。
如果在泛型类中,泛型参数与泛型类无任何关系。
泛型方法可以被static修饰,泛型参数在调用方法时确定的,非实例化确定
如:
泛型在继承方法的体现
Object[] a = null;
String[] b = null;
a = b; //存在子父类关系,类型转换
泛型使用时不具有子父类关系
List
浙公网安备 33010602011771号