Java定义一个显式的package-private修饰符

时间:2018-10-03 05:18:45

标签: java access-modifiers access-levels

很明显,Java具有访问级别package-private,该访问级别是通过不添加任何显式修饰符来实现的。

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

如果没有办法,为什么私有软件包决定设置为默认级别?

例如,如果默认级别是公共级别,则比我们更自觉地定义相关访问级别。

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

编辑

您可以使用Lombok的@PackagePrivate

对其进行明确定义。
  

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

@PackagePrivate String thanksLombok;

2 个答案:

答案 0 :(得分:1)

我认为

如果默认值为

,那将是不好

public,因为您可能会错过指定修饰符和本应为私有的代码段,否则世界可能会访问的内容。另外,这可能与OOP的核心概念之一-封装

private,因为通常您希望与其他类进行交互,而不是在一个类中编写所有内容。

protected,因为我希望(个人观点)文件夹(包)中的内容可以在文件夹内访问,而不是位于完全不同的目录中的类(子类)中。


如果我要再做一次,我会选择package-private作为默认设置,因为如果某些东西在一起(在同一包中),则可能是它们应该能够互相交谈。

>

答案 1 :(得分:0)

  

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

不,没有。 (修改Java语言的简短操作,对于这种情况,这是极不可能的。)

其余的问题需要基于意见的答案 1 ,而且没有话题。


1-1-25年前,当我们做出设计决定时,我们还不在房间里。 2)没有(AFAIK)现有的公开语言文档可用于原始语言设计决策。 3)即使我们可以问房间里的人,大多数人也会被遗忘。 4)您/我为“逆向工程”原始思维所做的任何尝试都会受到〜25年事后洞察力的影响。