现在有如下两个类:
public class GenericFather<T> {
public void (T t) {
System.out.println(t);
}
}
public class GenericSon extends Generic<T> {
}
如果按照这样的方式继承的话,编译器将报错:T cannot be resolved to a type
不存在T这个类型,所以说,如果父类具有泛型的话,子类继承父类一定要传一个实际的参数,所以可以这样继承:
public class GenericSon<T> extends GenericFather {
}
这种方式继承是可以得,因为当子类new出一个对象时,将会传递一个实际的类型给子类的泛型T,这个时候再用子类的T去初始化父类的T,这个时候父类的泛型T就是一个实际的类型了。
另外如果继承这样使用:
public class GenericSon extends GenericFather {
}
没有指定GenericFather的泛型,那么GenericFather中使用了泛型的方法将会变成接收Object方法
总结:
定义了泛型类可不是用泛型,如果不使用那么里面所有使用泛型的地方默使用Object,继承泛型的时候要给父类的泛型T指定一个存在的类型,这个类型可以是一个已经定义过的类,也可以是子类的泛型.