有什么方法可以在 Java 中定义一个私有的 class,只有同一个包中的其他 class 才能访问它吗?

Is there any way to define a private class in Java which only other classes in the same package can access it?

我一直在想这个问题,为什么在 Java 的包中定义 private classes 不像我们定义它的方式那样可行在 namespace.Net.

假设我的 Java 项目中有一个 ds 包。我在这个包中的 StackQueue 的名称中有两个 classes。这两个 classes 都需要在 ListNode 的名称中使用另一个 class。 ListNode 仅被 ds 包中的其他 classes 所需要,不应暴露给 ds 包之外的 classes。

我可以将 ListNode 定义为内部 classes。但是在这种情况下,我应该在StackQueueclass中都定义它,而且它也是多余的。有什么设计模式可以解决这个问题吗?如果不是,请至少有人向我解释为什么这在 Java!

中是不可能的

您可以查看包私有 classes。 docs

如果您从 class 中省略 public/private/protected,它只能被同一包中的其他 class 访问

以下table显示了每个修饰符允许的成员访问权限。

Access Levels
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        

来自here