0

TestThis.java次のようなJava ファイルがあります。

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

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

上記のコード ファイルは、警告やエラーなしで正常にコンパイルされています。Aクラスのいずれかにアクセスする方法、またはB他の外部クラスからトップレベルのクラスなしでアクセスする方法はありますか?

そうでない場合、なぜJavaはトップレベルクラスなしでそのようなファイルのコンパイルを許可するのでしょうか?

4

2 に答える 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();
    }
}

ここでの規則は、ソース ファイルに複数のパブリック クラスを含めることはできないということです。ある場合、ファイル名はこのパブリック クラス名と一致する必要があります。それ以外の場合 (あなたの場合)、必要に応じてファイルに名前を付けることができます。他の非公開クラスはパッケージから見えるようになり、通常どおりアクセスできます。

于 2008-11-28T05:55:29.100 に答える
1

同じパッケージ内の他のクラスは、A と B にアクセスできます。この場合、ソース ファイルに package ステートメントが存在しないため、null パッケージが使用されています。

于 2008-11-28T05:54:32.630 に答える