私はジェネリックと本当に混乱しています。私の状況を助けてください:
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
factor
m.factor
young
pro
m が実際に AgeFactor を参照している場合、ポリモーフィズムはフィールドに適用されないため、m.factor は常に AgeFactor の因子を参照することを理解しています。もしそうなら、ジェネリックの必要性は何ですか?Javaのジェネリックはそれ自体がジェネリックですか? ジェネリックを乗り越えるのを手伝ってください。