【问题标题】:Java multiple Classes and multiple main methods, execute all main methodsJava多个类和多个main方法,执行所有main方法
【发布时间】:2018-03-29 14:35:47
【问题描述】:

我是 Java 新手,我刚刚编写了一些代码,其中我使用了两个具有主要方法的类。 我想一个接一个地执行这两种主要方法。有没有可能以指定的顺序同时执行它们?

imFirst.java

public class imFirst {
    public static void main(String[] args) {
        System.out.println("I want to be the first one executed!");
    }
}

imSecond.java

public class imSecond {
    public static void main(String[] args) {
        System.out.println("I want to be the second one executed!");
    }
}

这些都在一个包中,通过 eclipse 执行。

【问题讨论】:

  • 是的。但请先发布您的代码。
  • 我不认为发布我的整个代码会很好,但我添加了一个简单的。
  • 你为什么首先使用两种主要方法main-方法是整个 Java 链中的第一部分。您应该考虑将您的两个打印件移入常规方法,然后从专用的main-method 调用它们。
  • 嗯,我只是好奇这是否可能。
  • 好吧,Java 总是会启动一个 main 方法。作为程序员,你的工作就是在 main 方法中指定程序应该做什么。所以没有选项可以让Java在第一个完成后自动启动另一个main。但是,您可以为此目的创建一个简单的batch/script-文件。

标签: java class main


【解决方案1】:

你可以从imFirst调用imSecond的main:

public class imFirst {
    public static void main(String[] args) {
        System.out.println("I want to be the first one executed!");
        imSecond.main(args);
    }
}

也可以相反:

public class imSecond {
    public static void main(String[] args) {
        System.out.println("I want to be the second one executed!");
        imFirst.main(args);
    }
}

根据您的需要进行操作。但是不要同时做这两件事,否则你会得到两个方法互相调用的无限循环。

附带说明:使用正确的 java 命名约定。类名应该是 CamelCase。

【讨论】:

  • 更好的是,不要乱用。创建一个新类RunAll,其主方法调用其他方法。然后你可以选择单独运行第一个,或者单独运行第二个,或者两者都运行。
  • @Andreas 我同意。但是 OP 可能需要坚持该方案。在这种情况下,知道其他main-methods 也可以像常规方法一样被调用是很有帮助的。
【解决方案2】:

快速修复

您也可以像所有其他常规方法一样调用main-方法:

public static void main(String[] args) {
    imFirst.main(null);
    imSecond.main(null);
}

更好的方法

但您应该首先考虑一下为什么您甚至需要两种主要方法main 方法是整个 Java 链中的第一件事,通常您只对每个完整的程序使用 one。目的是简单地启动程序,大多数时候它只是调用一个专用类,例如:

public static void main(String[] args) {
    ProgramXY programXY = new ProgramXY();
    programXY.init();
    programXY.start();
}

所以我建议您简单地将两个打印语句移动到自己的类和方法中,然后简单地从一个主要方法调用它们:

实用程序类:

public class ConsolePrinter {
    public static void println(String line) {
        System.out.println(line);
    }
}

唯一的主方法:

public static void main(String[] args) {
    ConsolePrinter.println("I want to be the first one executed!");
    ConsolePrinter.println("I want to be the second one executed!");
}

更笼统

或者为了更一般的目的:

头等舱:

public class FirstClass {
    public void firstMethod() {
        // ...
    }
}

二等:

public class SecondClass {
    public void secondMethod() {
        // ...
    }
}

唯一的main方法:

public static void main(String[] args) {
    FirstClass first = new FirstClass();
    SecondClass second = new SecondClass();

    first.firstMethod();
    second.secondMethod();
}

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2011-08-11
    相关资源
    最近更新 更多