一:深入泛型使用。主要是父类和子类存在泛型的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>{
    
}
View Code

相关文章: