请问,泛型类的继承,子类继承泛型类父类,父类在extends后已经给出了具体的类型是 Float,那么在主函数中,创建子类对象q,,
q.setX("父亲属性存储字符串--str")为什么不报错呢?在子类中父亲的泛型不是已经实参化为
Float了吗?那父亲的对象属性类型也应该是
Float?或者是我的理解是错的 希望能帮我指出来 谢谢!
class TypDemo<E>{
private E x;
public TypDemo() {
}
public TypDemo(E x) {
this.x = x;
}
public void setX(E z){ x=z;}
public E getX(){ return x;}
@Override
public String toString() {
return x+"";
}
}
public class DemoClass<T>extends TypDemo<Float> {
private T y;
public DemoClass(T y) {
this.y = y;
}
public DemoClass(T y, Float x) { //父类的泛型已经实参化为 Float
super(x);
this.y = y;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
public static void main(String[] args) {
DemoClass q=new DemoClass(123L); //未指定泛型的类型实参
System.out.println(q.getY()); //输出 y
q.setY(1234.5); //存储双精度数
System.out.println(q.getY ()) ;
q.setX("父类属性存储字符串--str"); //存储引用
System.out.println(q.getX()) ; //输出结果
q.setY("子类属性可以存储字符串"); //存储字符串的引用
System.out.println(q.getY()) ; //输出结果
}
}
不是的,float对应的是子类的类型