为什么我无法创建自定义String类的实例,而我能够创建自定义System类的实例

时间:2012-11-29 05:37:47

标签: java string

我有两组代码,我已经定义了自定义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,那么为什么行为有差异?

1 个答案:

答案 0 :(得分:2)

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

将您的main更改为使用java.lang.String课程:

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