有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    发生这种情况是因为main使用自定义String类作为参数类型,而该类与标准main方法(入口点)不匹配,该方法接受java.lang.String[]作为参数;因此抱怨

    main更改为将java.lang.String类用作:

           public static void main(java.lang.String[] args)