一:深入泛型使用。主要是父类和子类存在泛型的demo
/** * 父类为泛型类 * @author 尚晓飞 * @date 2014-7-15 下午7:31:25 * * * 父类和子类的泛型。 * 【泛型的具体声明】 * (1)子类直接声明具体类型 * (2)使用时指定具体类型(new 对象时) * (3)子类泛型>=父类泛型(个数,类型,顺序无关) * * 【泛型的确定】 * (1)属性:在父类中,泛型随父类泛型而定 * 子类中,泛型随子类泛型而定 * (2)重写方法中: * 泛型全部随父类而定 * 【泛型的擦除】 * 父类和子类泛型要么同时擦除。统一object对待 * 子类不能擦除泛型,而父类存在泛型 * * * @param <T> */ public abstract class Father<T,T1> { T name; public abstract T test(T t); } //子类声明时指定具体类型 //属性类型为具体类型 class Child1 extends Father<String,Integer>{ @Override//重写方法中,泛型全部随父类而定 public String test(String t) { // TODO Auto-generated method stub return null; } } //子类为泛型类.类型在使用时确定(new 对象时) //子类类型>=父类类型 class Child2<T1,T,T2> extends Father<T,T1>{ @Override public T test(T t) { // TODO Auto-generated method stub return null; } } //子类为泛型类,父类不指定泛型,统一object对待,父类泛型的擦除 //子类和父类同时擦除泛型。 //子类不能单独擦除泛型,而父类不擦除泛型 class Child3<T1,T> extends Father{ T1 name2;//子类中属性,随子类泛型而定 @Override public Object test(Object t) { // TODO Auto-generated method stub return null; } } //这是报错的,子类擦除,父类使用泛型。编译通不过。 class Child extends Father<T, T1>{ }