Java 从 main() 方法调用非静态方法的约定
Java conventions for calling non-static methods from the main() method
我在 Java 中编程已经有一段时间了,但它始终只是 Android 应用程序不以静态 main 方法启动。我想知道“标准”Java 程序的约定,因为大多数时候,我调用的是非静态方法,显然不能通过 main() 方法直接完成。
这是我编写的示例程序(仅打印斐波那契数)。这是一个可以接受的解决方案吗?
public class MainClass {
public static void main(String[] args) {
new MainClass().mainProgram();
}
public void mainProgram() {
System.out.println(fibonacci(10).toString());
// go on with the program
}
// suppose this method needed to be non-static
public Integer fibonacci(int count) {
if (count <= 0) {
return null;
}
if (count == 1 || count == 2) {
return 1;
}
// noinspection
// (suppresses logically impossible null-pointer exception warnings)
return fibonacci(count - 2) + fibonacci(count - 1);
}
}
就是这样。
创建对象实例。在实例上调用方法。
例如,这是 Springboot 应用程序中的典型代码。
创建SpringApplication
的实例,然后调用实例方法run
。
public class Application {
public static void main(final String[] args) {
final SpringApplication application =
new SpringApplication(Application.class);
application.run(args);
}
}
至于“main”方法的名称,在上面的示例中 run
是有意义的,因为您想要 run
应用程序。
但也可以是 run
、execute
、start
、serve
、scan
,这取决于你的程序做什么。
在你的具体情况下,我会称之为 calculateFibonacci
,或者如果你的 class 被命名为 Fibonnacci 那么就 calculate()
Is this how you would do it or what should I change?
我觉得你的代码看起来不错。
我的写法如下
public class Fibonacci {
public static void main(String[] args) {
Fibonacci fibonacci = new Fibonacci();
fibonacci.execute();
}
public void execute(){
System.out.println(fibonacci(10));
}
public int fibonacci(int n){
if (n <= 0){
throw new IllegalArgumentException(
"n must be greater then 0. Received: " + n);
}
if (n == 1 || n == 2){
return 1;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
}
异常的原因而不是 null 它表明这是一个实际的无效(或非法)参数。该程序无法计算,而 null
将指示负数的计算结果为 null
,但事实并非如此。
但是你拥有它的方式完全没问题。
我在 Java 中编程已经有一段时间了,但它始终只是 Android 应用程序不以静态 main 方法启动。我想知道“标准”Java 程序的约定,因为大多数时候,我调用的是非静态方法,显然不能通过 main() 方法直接完成。
这是我编写的示例程序(仅打印斐波那契数)。这是一个可以接受的解决方案吗?
public class MainClass {
public static void main(String[] args) {
new MainClass().mainProgram();
}
public void mainProgram() {
System.out.println(fibonacci(10).toString());
// go on with the program
}
// suppose this method needed to be non-static
public Integer fibonacci(int count) {
if (count <= 0) {
return null;
}
if (count == 1 || count == 2) {
return 1;
}
// noinspection
// (suppresses logically impossible null-pointer exception warnings)
return fibonacci(count - 2) + fibonacci(count - 1);
}
}
就是这样。
创建对象实例。在实例上调用方法。
例如,这是 Springboot 应用程序中的典型代码。
创建SpringApplication
的实例,然后调用实例方法run
。
public class Application {
public static void main(final String[] args) {
final SpringApplication application =
new SpringApplication(Application.class);
application.run(args);
}
}
至于“main”方法的名称,在上面的示例中 run
是有意义的,因为您想要 run
应用程序。
但也可以是 run
、execute
、start
、serve
、scan
,这取决于你的程序做什么。
在你的具体情况下,我会称之为 calculateFibonacci
,或者如果你的 class 被命名为 Fibonnacci 那么就 calculate()
Is this how you would do it or what should I change?
我觉得你的代码看起来不错。
我的写法如下
public class Fibonacci {
public static void main(String[] args) {
Fibonacci fibonacci = new Fibonacci();
fibonacci.execute();
}
public void execute(){
System.out.println(fibonacci(10));
}
public int fibonacci(int n){
if (n <= 0){
throw new IllegalArgumentException(
"n must be greater then 0. Received: " + n);
}
if (n == 1 || n == 2){
return 1;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
}
异常的原因而不是 null 它表明这是一个实际的无效(或非法)参数。该程序无法计算,而 null
将指示负数的计算结果为 null
,但事实并非如此。
但是你拥有它的方式完全没问题。