我试图知道如果我有两个带有main函数的类会发生什么。 我使用了以下代码:
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.Expecting 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类的主函数,然后运行Hello类。 这里出了什么问题?
答案 0 :(得分:5)
查看Hello.main
的声明:
public static void main(String[] args)
现在你试图这样称呼它:
Hello.main();
在方法中,您期望args
的价值是多少?您需要为args
提供一个值...幸运的是,您已经拥有一个,因为您在使用args
作为参数的方法中,也是类型String[]
。因此,您应该能够将代码更改为:
Hello.main(args);
请注意,两个args
参数 - 一个用于Hello.main
,另一个用于A.main
完全独立。我们发生使用传递一个值来为另一个提供初始值,但我们可以很容易地写出:
Hello.main(null);
或
Hello.main(new String[] { "Some", "other", "strings" });
代替。
答案 1 :(得分:0)
在你的第二堂课中这样做:
public static void main(String[] args) throws IOException {
MyOtherClass.main(args);
}