我有一个 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 甚至允许在没有顶级类的情况下编译此类文件?
照常(例如,从 Test.java 访问):
public class Test {
public static void main(String... args) {
A a = new A();
a.foo();
B b = new B();
b.bar();
}
}
这里的规则是源文件中不能有多个公共类。如果有,文件名必须与该公共类名匹配。否则(您的情况),您可以根据需要命名您的文件。其他非公共类将是包可见的,您可以照常访问它们。
同一个包中的任何其他类都可以访问A和B;在这种情况下,由于源文件不存在包语句,因此使用空包。