如何自实例化 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...
*/
}
我加入了这个编程挑战网站,每个问题我只能提交一个文件。我想为我将用于挑战的所有类创建一个模板类。所以,我的想法是我会这样做:
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()
。