首页 > 解决方案 > Java 定义了一个显式的包私有修饰符

问题描述

显然,Java 有一个访问级别的包私有,它通过不添加任何显式修饰符来实现。

但是没有办法显式添加这个修饰符吗?当我们只想在包中使用成员时,我们需要省略访问级别,这有点令人困惑。

如果没有办法,为什么 package private 决定成为默认级别?

例如,如果默认级别是公开的,我们会更有意识地定义相关的访问级别。

这不是为什么使用它的问题的重复,因为我知道为什么,我只是不知道为什么它是隐式定义而不能显式定义的。

编辑

您可以使用 Lombok 的@PackagePrivate显式定义它

用于指示注释实体具有包私有访问级别的明确意图。当前由 FieldDefaults 和 Value 使用,以避免使其成为公共、受保护或私有的字段之一。

@PackagePrivate String thanksLombok;

标签: javaaccess-modifiersaccess-levels

解决方案


但是没有办法显式添加这个修饰符吗?

不,没有。(没有修改 Java 语言,这样的事情不太可能发生。)

您的问题的其余部分要求基于意见的答案1并且是题外话。


1 - 1) 大约 25 年前,当我们做出设计决定时,我们不在房间里。2)没有(AFAIK)原始语言设计决策的现有公开文档。3)即使我们可以问他们,房间里的人也可能大部分都忘记了。4)你/我对“逆向工程”原始想法的任何尝试都会被大约 25 年的事后诸葛亮。


推荐阅读