Java Puzzler-这是什么原因?

标签 java string compilation program-entry-point puzzle

<分区>

我写了下面的代码。

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); 
    } 
}

执行时出现如下错误

The program compiled successfully, but main class was not found.
  Main class should contain method: public static void main (String[] args).

为什么会这样?...虽然定义了 main 方法,但为什么系统没有读取/识别它?

最佳答案

public static void main(String[] args) {

因为您必须使用 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); 
    } 
}

因此,您可以从这个谜题中学到的教训是:不要将您的类命名为其他常用类!

关于Java Puzzler-这是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065794/

相关文章:

java - 元素节点和文本节点的区别

java - 两个线程调用一个方法

c++ - 当我编译 CLR C++ 应用程序的 "release"版本时,除了 GUI 之外,还会弹出一个 cmd 窗口。我该如何解决这个问题?

编译 linux 内核的一小部分(即几个文件)

java - 为 Java 创建编译脚本

java - 调用方法而不导入特定项目

java - 将现有的 tomcat 服务器与 Active MQ 集成?

Java 子字符串

Android 字节数组转字符串转字节数组

javascript - 检查一个数组的字符串是否作为另一个数组字符串的一部分出现