首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从main()方法调用非静态方法的Java约定

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

Stack Overflow用户
提问于 2021-07-27 20:43:43
回答 1查看 277关注 0票数 0

我已经用Java编程很长一段时间了,但它总是只是Android应用程序,而不是从静态的主方法开始。我想知道“标准”Java程序的约定,因为大多数时候,我调用的是非静态方法,这些方法显然不能通过main()方法直接完成。

下面是我编写的一个示例程序(只打印一个Fibonacci数字)。这是一个可以接受的解决办法吗?

代码语言:javascript
复制
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);
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-27 20:50:14

就是这样。

创建一个对象实例。调用实例上的方法。

例如,这是Springboot应用程序中的典型代码。

创建一个SpringApplication实例,然后调用实例方法run

代码语言:javascript
复制
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()

,你是这样做的还是我应该改变什么?

我觉得你的代码看起来不错。

I编写的方式如下所示

代码语言:javascript
复制
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,但情况并非如此。

但你拥有它的方式是完全好的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68551553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档