Jus*_*per 5 java string puzzle program-entry-point compilation
我写了以下代码.
class String {
private final java.lang.String s;
public String(java.lang.String s){
this.s = s;
}
public java.lang.String toString(){
return s;
}
public static void main(String[] args) {
String s = new String("Hello world");
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行它时,得到以下错误
The program compiled successfully, but main class was not found.
Main class should contain method: public static void main (String[] args).
Run Code Online (Sandbox Code Playgroud)
为什么会这样?...虽然主要方法被定义为什么系统没有读取/识别它?
为什么会这样?
因为String[]你在这一点上使用的不是一个java.lang.String[].它是String您在此处定义的类的数组.因此,您的IDE(或其他任何东西)正确地告诉您该main方法是一个有效的入口点.
课程:不要使用与常用类名相同的类名.它使您的代码非常混乱.在这种情况下,令你感到困惑,你已经迷茫了自己!
public static void main(String[] args) {
Run Code Online (Sandbox Code Playgroud)
因为你必须使用java.lang.String,而不是你自己的.在您的main方法中,String您使用的实际上String是定义的自定义,而不是真实的自定义java.lang.String.
这是代码,澄清了一下:
class MyString {
private final String s;
public MyString(String s){
this.s = s;
}
public String toString(){
return s;
}
public static void main(MyString[] args) { // <--------- oh no!
MyString s = new MyString("Hello world");
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以从这个难题中学到的教训是:不要将您的课程命名为其他常用课程!