我有两组代码,我已经定义了自定义String类并尝试创建它的实例,而在第二个我定义了自定义System类并尝试创建它的实例。
这既不是面试问题,也不是家庭作业,我只是在检查this
后尝试过在这里我试图创建我定义的String类的实例,并得到Exception in thread "main" java.lang.NoSuchMethodError: main
public class Test {
public static void main(String[] args) throws Exception {
String s = new String();
java.lang.System.out.println("done");
}
}
class String {
public String() {
java.lang.System.out.println("custom String");
}
}
在这部分中,我试图创建我定义的System类的实例,并且它工作正常
public class Test {
public static void main(String[] args) throws Exception {
System s = new System();
java.lang.System.out.println("done");
}
}
class System {
public System(){
java.lang.System.out.println("custom System");
}
}
String和System类都是final,那么为什么行为有差异?
答案 0 :(得分:2)
这种情况正在发生,因为您的main
使用自定义String
类作为参数类型,与标准main
方法(入口点)不匹配,后者接受java.lang.String[]
作为参数;因此抱怨。
将您的main
更改为使用java.lang.String
课程:
public static void main(java.lang.String[] args)