显然Java有一个Access级别包私有 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html这是通过不添加任何显式修饰符来实现的。
但是有没有办法显式添加这个修饰符呢?这有点令人困惑,我们需要omit当我们只想使用包中的成员时的访问级别。
如果没有办法,为什么包私有决定作为默认级别?
例如,如果默认级别是公共的,那么我们会更有意识地定义相关的访问级别。
这不是重复的问题为什么使用它 https://stackoverflow.com/questions/28414803/java-default-access-level-package-private-access-why-it-is-used-for,因为我知道为什么,只是不知道为什么它是隐式定义而不能显式定义。
EDIT
您可以使用 Lombok 显式定义它@PackagePrivate https://projectlombok.org/api/lombok/experimental/PackagePrivate.html
用于指示带注释的实体具有包私有访问级别的明确意图。目前由 FieldDefaults 和 Value 使用,以避免将字段设为公共、受保护或私有字段之一。
@PackagePrivate String thanksLombok;
在我看来,
这将是bad如果默认是
public
因为您可能会错过指定修饰符和原本打算私有的代码片段,或者某些东西可以被世界访问。此外,这可能违反 OOP 的核心概念之一 -封装.
private
因为通常您会希望与其他类交互,而不是在一个类中编写所有内容。
protected
因为我希望(个人观点)文件夹(包)中的内容可以在文件夹内访问,而不是驻留在某个完全不同的目录中的类(子类)中。
如果我再做一次,我会选择 package-private 作为默认值,因为如果有些东西在一起(在同一个包中),其意图可能是它们应该能够相互通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)