サブクラスの名前をハードコーディングすることなく、実行元のサブクラスのインスタンスを作成する便利なスーパークラスを作成したいと思います。これを行うための最速の方法は何ですか?
サブクラスのコンストラクターは同じシグニチャーを持つと想定できます。たとえば、パラメーターはありません。
class Main {
public static void main (String [] args) {
Main m = new NAME-OF-SUBCLASS();
}
}
class MainSub1 extends Main { /*...*/ }
class MainSub2 extends Main { /*...*/ }
したがって、MainSub1$ java MainSub1
から(コマンドラインから)mainを呼び出すと、MainSub1オブジェクトが作成されます。
私がこれを書いているときに、受け入れられた答えがそれを行うことができないと言っているこのスレッドを見つけましたが、もちろん、それは、どういうわけか、反省などによって可能ですよね?