2

パッケージに分割された Java プログラムを作成しています。クラスで定義されているスコープ内のクラスとそのサブスコープにアクセス許可を与えるにはどうすればよいですか。

たとえば、app.A、app.A.Sub、app.B の 3 つのパッケージがあります。また、パッケージ AI にはクラス GlobalA があります。
パッケージ app.A と app.A.Sub のみが GlobalA を使用できるようにしたいのですが、app.B は使用できません。

どうすればいいですか?

4

4 に答える 4

3

There is absolutely no hierarchy in java packages. There are just names.

So package a.suba and a have no special relation. You have no way to give special rights to "sub packages".

于 2012-10-07T17:09:12.503 に答える
0

The rules of access modifiers

    Modifier    Class   Package     Subclass    World
    public      Y   Y   Y   Y
    protected   Y   Y   Y   N
    no modifier Y   Y   N   N
    private     Y   N   N   N

Based on the rules above you want GlobalA to be the default (no modifier) access. Which will prevent B and anything not inside the packageA from seeing it. Now it should be known when you declare a .java file you do need something to have a public modifier attached to an Object that has the same name as the .java file. I.e. public class Foo resides in Foo.java

于 2012-10-07T17:10:37.690 に答える
0

SubAとはどちらもへBの「外部」パッケージであり、アクセス修飾子によって許可または禁止されるものはすべて、同様の方法ですべての「外部」パッケージに適用されるため、単純にアクセス修飾子を使用してとAを区別することは論理的に不可能に思えます。SubAB

リフレクションを使えば可能かもしれませんが、それだけの価値はないと思います。

于 2012-10-07T17:17:37.410 に答える
0

Java は言語のサブパッケージのモデルを実際には使用しません。関連するコードを整理するための便利な方法にすぎません。つまり、packagesaおよびa.b(bここで、用語では、a.bは の「サブパッケージ」です) がある場合、package 内のコードにさまざまな方法で影響を与えるa、package 内のクラスのアクセス修飾子を使用して何もできません。Javaに関する限り、のクラスへのアクセス権はまったく同じです。aa.bba.bba

于 2012-10-07T17:17:45.583 に答える