如何在Java中定义main(String[] args)而不获得警告和错误?



当我在Eclipse项目的默认包中创建一个新的main.java文件时,它生成一个main方法,如下所示:

public static void main(String[] args)
{
}

这立即引发一个警告,表示This method has a constructor name。建议删除void:

public static main(String[] args)
{
}

现在,而不是警告,我得到一个错误:Illegal modifier for the constructor in type main; only public, protected & private are permitted。如果我删除static,我的代码现在看起来像:

public main(String[] args)
{
}

这一次,我仍然得到一个错误,但是一个不同的错误说:

Error: Main method not found in class main, please define the main method as:
    public static void main(String[] args)

Argggh !但这又让我回到了开始的地方。我如何定义main方法,使我不会得到任何错误或警告?

我正在使用Eclipse Juno Service Release 2 javascript -1.7。请注意,我是Java的新手;我有c#背景。此外,这可能是一个重复的问题,但我找不到它。

不要把你的类命名为main,而是Main

一般来说,坚持Java编码标准:以大写字母开始类名(Main而不是main),这样就不会遇到这些问题了。

如果将文件命名为main.java,则类也必须命名为main,这违反标准(类以大写字母开头),但这是可能的。在类中,与类同名的方法被视为构造函数。因此,为了解决您的问题并符合标准,将您的类和文件重命名为Main,并带有大写"M"

将您的类名从main更改为Main或其他名称。此外,遵循JavaBean API规范,您的类必须使用CamelCase,且首字母为大写。

与问题不是100%相关,但是你也不应该用Java JDK类的名字创建类,例如String:

public class String {
    public static void main(String[] args) {
        System.out.println("Try to execute this program!");
    }
}

这不仅会给编译器/JVM带来问题,也会给未来的读者带来问题(记住你也是你自己代码的未来读者)。

注意:要修复上面的代码,只需使用java.lang.String类的全名:
public class String {
    public static void main(java.lang.String[] args) {
        System.out.println("Try to execute this program!");
    }
}

或者更好的是,更改类的名称

在java中,类名和文件名必须匹配。如果你有一个名为Main .java的文件,那么类名也必须是Main,在这种情况下,构造函数方法将被命名为Main,所以你不能有一个Main方法。

将文件和类名更改为main以外的名称

相关内容

  • 没有找到相关文章

最新更新