我真的对泛型感到困惑,请帮助我解决我的情况:
public <M extends AgeFactor> void setAgeFActor(M m){
System.out.println("referene receiveed"+m.factor); //WHAT SHOULD IT REFER TO?? AgeFactor or type given at Runtime as young
this.factor=m.factor;
}
在上面的代码中,引用M m
指AgeFactor
的是我在运行时给出的类型。假设我通过以下方式调用它:
ath1.setAgeFActor(new young()); //ath1 is referring to setAgeFActor method's class
和层次结构是:
class AgeFactor {
String factor;
}
class young extends AgeFactor {
String factor = "Young";
public String toString() {
return " " + factor + " ";
}
}
class experienced extends AgeFactor {
String factor = "Experienced";
public String toString() {
return " " + factor + " ";
}
}
class pro extends AgeFactor {
String factor = "Pro";
public String toString() {
return " " + factor + " ";
}
}
我想知道的是为什么要m.factor
提到AgeFactor
's field factor
?? m.factor
应该指young
或pro
我在运行时给出的类型。
如果 m 实际上指的是 AgeFactor,那么我知道 m.factor 将始终指代 AgeFactor 的因子,因为多态性不适用于字段。如果是这样,那么泛型的需求是什么?Java的泛型本身是泛型的吗?请帮助我克服泛型。