使公共类名和.java文件名相同的真实原因是什么?

时间:2017-09-17 11:21:53

标签: java javadoc javac jls

我已经看到了这个问题的大部分答案,但是,任何人都可以告诉 java创作者的想法有什么限制吗?

到目前为止,我从现有的答案中了解到,编译器必须在给出包名时在相应的目录结构中正确找到.java文件。

但是我们知道java运行.class文件而不是.java文件然后,为什么编译器会搜索java文件而不是.class并在代码片段下面备份这个答案,如果把它放在一个.java文件中。要运行它,我运行java Try或java Try2是编译器搜索源代码的情况吗?

class Try {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

class Try2 {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

我见过两个答案,但那些仍然不满足我的问题

  1. Why must a Java file have the same name as its public class?

  2. Why are filenames in Java the same as the class name?

  3. 另外,我无法理解这个问题的JLS。所以再回答一个新问题。

1 个答案:

答案 0 :(得分:0)

可以这样写:

<强> TestClass.java

class Test1 { 
    public static void main(String args[]) { 
        System.out.println("Test1");
   } 
} 

class Test2 { 
    public static void main(String args[]) { 
        System.out.println("Test2");
   }
}

现在让我们编译:

javac TestClass.java

您将看到两个文件已创建:

Test1.classTest2.class,每个都会执行不同的主。

现在,如果你是编译器,你怎么知道应该将哪个类作为入口点来执行?

这是限制的原因之一 - 编译器将很容易确定应该将哪个类作为入口点运行。