Javaクラスを自己インスタンス化するにはどうすればよいですか?クラスファイル以外のファイルは使用しないでください。また、NAME変数を初期化した行の後、コンパイル時にクラスの名前がわからないとします。
例:
public class Foo implements Bar {
public static final String NAME = "Foo";
private void instantiate() {
Bar baz = (Bar)Class.forName(NAME).newInstance();
}
//...
}
と呼ばれる別のファイルが必要なため、間違っていますBar.java
。そのはず:
public class Foo {
/*
Instantiate self...
*/
}
私はこのプログラミングチャレンジのウェブサイトに参加しました。そこでは、問題ごとに1つのファイルしか提出できません。チャレンジに使用するすべてのクラスのテンプレートクラスを作成したいと思います。だから、私が心に留めているのは、これを行うということです:
public class Foo {
public static final String NAME = "Foo";
public static void main (String[] args) throws IOException {
//Instantiate self and call launch(args)
Foo foo = new Foo();
foo.launch(args);
System.exit(0);
}
public void launch(String[] args) {
//...Do actual code here
}
}
クラス名とNAME変数のみを変更したいので、テンプレートクラスを使用するたびにクラスをインスタンス化する方法を変更する必要はありません。私が持っている現在の設定では、行を編集する必要があります:Foo foo = new Foo();
そしておそらくその下の行。
launch()
また、なぜ私が呼び出して、mainメソッド内ですべてを実行しない必要があるのか疑問に思われるかもしれません。これは、Javaのインストラクターから得たものです。また、メソッド内で非静的メソッドを使用できないためmain()
です。