子クラス名なしで親クラスから子オブジェクトをインスタンス化することは可能です。
たとえば、次のクラスがあります。
public class A {
protected int a;
public A1() {
a = 0;
}
public int getA() {
return a;
}
public static A getObject() {
// some code which I need to write
}
}
public class A1 extends A {
public A1() {
a = 5;
}
}
public class A2 extends A {
public A2() {
a = 10;
}
}
使用例:
A a = A1.getObject();
a.getA(); // return 5
a = A2.getObject();
a.getA(); // return 10
a = A.getObject();
a.getA(); // return 0
A1、A2すべての子クラスではありません。無制限の数があるかもしれません。
getObject() メソッドを書き込んで、A クラスの子インスタンスを作成するにはどうすればよいですか。
PS:
子クラスオブジェクトを初期化するだけで済みますが、大量の子クラスがあり、それらすべてに対して「new」を呼び出すことはありません。また、静的メソッドを記述して初期化することもありません。また、すべての子には同じコンストラクターがあります。親から子インスタンスを作成できないのは大きな欠点です。