Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中访问没有顶级类的非顶级类_Java_Compiler Construction_Jvm_Classloader - Fatal编程技术网

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

在Java中访问没有顶级类的非顶级类,java,compiler-construction,jvm,classloader,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"); } } 以上代码文件编译正常,没有任何警告/错误。是否有任何方法可以访问A或B

我有一个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甚至允许在没有顶级类的情况下编译这样的文件呢?

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

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

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

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

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

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

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