在Java中访问没有顶级类的非顶级类

问题描述 投票:0回答:2

我有一个 Java 文件

TestThis.java
,如下所示:

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

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

上面的代码文件编译良好,没有任何警告/错误。有什么方法可以访问任何类

A
B
而不需要任何其他外部类的顶级类?

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

java jvm classloader
2个回答
5
投票

照常(例如,从 Test.java 访问):

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

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


1
投票

同一个包中的任何其他类都可以访问A和B;在这种情况下,由于源文件不存在包语句,因此使用空包。

© www.soinside.com 2019 - 2024. All rights reserved.