0

我想知道如果我有两个具有主要功能的类会发生什么。我使用了以下代码:

class A {
  public static void main(String[] args){
    System.out.println("Hello,World!");
  }
}
class Hello {
  public static void main(String[] args){
    System.out.println("Hello,World!");
  }
}

我使用编译它javac First.java(因为没有指定类为 public ,我将文件命名为 First.java);它编译没有任何错误,我只运行了 A 类。期望 Hello 类自行运行。没有发生(?),也许程序超出了范围。

所以,

我尝试编译以下 java 代码(我是初学者),但出现以下错误。代码:

class Hello {
  public static void main(String[] args) {
    System.out.println("Hello,World!");                                                 
  }
}
class A {
  public static void main(String[] args) {
    System.out.println("Hello,World!");
    Hello.main();
  }
}

我编译通过javac First.java并得到以下错误:

method main in class Hello cannot be applied to given types;

    Hello.main();
         ^

我希望程序首先运行 A 类的 main 函数,然后运行 ​​Hello 类的函数。这里出了什么问题?

4

2 回答 2

5

看声明Hello.main

public static void main(String[] args)

现在你试图这样称呼它:

Hello.main();

在方法中,您期望 的值是args多少?你需要为它提供一个值args... 幸运的是,你已经有了一个,因为你在一个args用作参数的方法中,也是 type String[]。因此,您应该能够将代码更改为:

Hello.main(args);

请注意,两个args参数 - 一个 forHello.main和一个 forA.main是完全独立的。我们碰巧使用传递一个的值来为另一个提供初始值,但我们可以很容易地写成:

Hello.main(null);

或者

Hello.main(new String[] { "Some", "other", "strings" });

反而。

于 2013-04-27T15:56:43.523 回答
0

在你的第二堂课上这样做:

public static void main(String[] args) throws IOException {
    MyOtherClass.main(args);
}
于 2013-04-27T16:02:12.697 回答