java为什么我不能创建自定义字符串类的实例,而我可以创建自定义系统类的实例
我有两组代码,第一组我定义了自定义字符串类并试图创建它的实例,第二组我定义了自定义系统类并试图创建它的实例
这既不是面试问题,也不是家庭作业,我只是在检查完后试了一下
在本文中,我试图创建我定义的字符串类的实例,我得到了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");
}
}
在这一部分中,我试图创建我定义的系统类的实例,它运行良好
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");
}
}
字符串和系统类都是最终的,那么为什么在行为上存在差异呢
# 1 楼答案
发生这种情况是因为
main
使用自定义String
类作为参数类型,而该类与标准main
方法(入口点)不匹配,该方法接受java.lang.String[]
作为参数;因此抱怨将
main
更改为将java.lang.String
类用作: