0

リフレクションを使用して、継承されたクラスのパラメーター化されたコンストラクターを呼び出そうとしています。ただし、コンストラクターはサブクラスには実装されておらず、スーパークラスにのみ実装されています。

class Parent{       
    public Parent(String value){
        doSomeThing(value);
    }
}

class Horst extends Parent{}

class Eva extends Parent{}

class AndereKlasse{       
    ...
    Class parentClass = MyConfig.getParentClass; // its here Horst.class or Eva.class
    Constructor parentConstructor =   Parent.class.getConstructor(String.class);
    parentConstructor.newInstance("just a String");
    ...
}

サブクラスから空のコンストラクターを取得しますが、Parentクラスからは取得しません。回避策はありますか?

4

1 に答える 1

1

サブクラスのEvaとHorstは、スーパークラスコンストラクターの呼び出し方法を指定するために、それぞれ独自のコンストラクターを定義する必要があるため、これは機能しません。スーパークラスのコンストラクターを呼び出しても、どのような場合でもサブクラスのオブジェクトは作成されません。そのサブクラスのオブジェクトを作成するには、サブクラスでコンストラクターを呼び出す必要があります。

于 2013-01-28T16:43:02.470 に答える