動的に生成されたクラスからオブジェクトをインスタンス化:このクラスに基づいて 、私はクラスClass <の新しいインスタンスを作成しようか! getValidator()メソッドによって返されたextends AbstractValidator>私は現在、このような何かを達成しようとしています
public abstract class AbstractEnumDefinition
extends AbstractRequestFieldDefinition {
private Vector<String> values = new Vector<String>();
public abstract void define(String lang);
protected void addEnumDefinition(String value){
values.add(value);
}
public Vector<String> getValues(){
return values;
}
@Override
public Class<? extends AbstractValidator> getValidator() {
return new AbstractValidator() {
@Override
public boolean isValid(String value) {
return values.contains(value);
}
@Override
public String getDefaultValue() {
return "";
}
}.getClass();
}
}
は、私はこのクラスを作成すると言う:
public class LanguageDefinition extends AbstractEnumDefinition {
public LanguageDefinition() {
super();
}
@Override
public void define(String language) {
addEnumDefinition("BEL-fr");
addEnumDefinition("BEL-nl");
addEnumDefinition("BEL-en");
}
}
後の私のコードでは、私はここにインスタンス化しようとしていますクラスはどこにでも宣言しますが、「生成されていません
new LanguageDefinition().getValidator().getConstructor().newInstance()
呼び出しますAbstractEnumDefinitionクラス内で動的に/動的に作成されます。これをやろうとすると
は、私が手java.lang.InstantiationException
ため
be....servlets.model.extraction.filter.editor.AbstractEnumDefinition$1
私は、これは、このクラスが明示的に手の前に作成する必要があり、動的に参照されていないことに起因していると思いますか?
私がバリデータごとに1つのクラスを記述する必要はありませできるようになるソリューションのいくつかの種類がありますか?助けのための
おかげで、
エリック
あなたは*動的に作成したクラス*とはどういう意味ですか?私たちがあなたを理解しているかどうかはわかりません。 – adarshr
はなしのparamコンストラクタのないことかもしれのgetInstance()がこのクラスのために失敗します。つまり、異種のクラスはリフレクションによってインスタンス化できません。 – yggdraa
問題を明確にするために質問を更新しました。ありがとう。 – efj