java - Java中没有顶级类的情况下访问非顶级类

标签 java compiler-construction jvm classloader

我有一个 Java 文件 TestThis.java 如下所示:

class A
{
    public void foo() 
    {
        System.out.println("Executing foo");
    }
}

class B
{
    public void bar()
    {
        System.out.println("Executing bar");
    }
}

上面的代码文件编译正常,没有任何警告/错误。有什么方法可以访问任何类 AB 而无需来自任何其他外部类的顶级类?

如果不是,那么为什么 Java 甚至允许在没有顶级类的情况下编译此类文件?

最佳答案

像往常一样(例如,从 Test.java 访问):

public class Test {
    public static void main(String... args) {
        A a = new A();
        a.foo();
        B b = new B();
        b.bar();
    }
}

这里的规则是源文件中不能有多个公共(public)类。如果有,文件名必须与该公共(public)类名匹配。否则(您的情况),您可以根据需要命名您的文件。其他非公共(public)类将是包可见的,您可以照常访问它们。

关于java - Java中没有顶级类的情况下访问非顶级类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/325114/

相关文章:

java - Hibernate 不保存对象,即使在日志中没有收到任何错误

java - 避免 jvm 预热

compiler-construction - 与传统编译器相比,JIT 编译器有什么缺点吗?

c# - CLR 与 JIT

java - 测量 java.io.InputStream 的性能

java - Java中字符串池的底层机制?

c# - 如何将 Java "Arrays.copyOfRange"函数转换为 C#?

java - 在android中将PDF文件转换为字节数组

c++ - 典型的 C++ 编译器处理哪些工作?

java - 如何找到分配对象的剩余内存量?