很明显,Java具有访问级别package-private,该访问级别是通过不添加任何显式修饰符来实现的。
但是没有办法显式添加此修饰符吗?当我们只想使用包中的成员时,需要忽略访问级别有点令人困惑。
如果没有办法,为什么私有软件包决定设置为默认级别?
例如,如果默认级别是公共级别,则比我们更自觉地定义相关访问级别。
这不是why use it问题的重复,因为我知道为什么,我只是不知道为什么它隐式定义而不能显式定义。
编辑
您可以使用Lombok的@PackagePrivate
对其进行明确定义。用于指示带注释的实体具有包私有访问级别的明确意图。当前由FieldDefaults和Value使用,以避免使它成为公共字段,受保护字段或私有字段之一。
@PackagePrivate String thanksLombok;
答案 0 :(得分:1)
我认为,
如果默认值为
,那将是不好 public
,因为您可能会错过指定修饰符和本应为私有的代码段,否则世界可能会访问的内容。另外,这可能与OOP的核心概念之一-封装。
private
,因为通常您希望与其他类进行交互,而不是在一个类中编写所有内容。
protected
,因为我希望(个人观点)文件夹(包)中的内容可以在文件夹内访问,而不是位于完全不同的目录中的类(子类)中。
如果我要再做一次,我会选择package-private作为默认设置,因为如果某些东西在一起(在同一包中),则可能是它们应该能够互相交谈。
>答案 1 :(得分:0)
但是没有办法显式添加此修饰符吗?
不,没有。 (修改Java语言的简短操作,对于这种情况,这是极不可能的。)
其余的问题需要基于意见的答案 1 ,而且没有话题。
1-1-25年前,当我们做出设计决定时,我们还不在房间里。 2)没有(AFAIK)现有的公开语言文档可用于原始语言设计决策。 3)即使我们可以问房间里的人,大多数人也会被遗忘。 4)您/我为“逆向工程”原始思维所做的任何尝试都会受到〜25年事后洞察力的影响。