微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 main() 方法调用非静态方法的 Java 约定

如何解决从 main() 方法调用非静态方法的 Java 约定

我已经用 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 应用程序。

但它可以是 runexecutestartservescan 之类的东西,这取决于您的程序做什么。

在您的具体情况下,我会称它为 calculateFibonacci,或者如果您的班级名为 Fibonnacci,则只需 calculate()


这是你会怎么做还是我应该改变什么?

我认为你的代码看起来不错。

的写法如下

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,但事实并非如此。

但是你拥有它的方式完全没问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。