我什么时候在Java中使用package-private?

参见英文答案 > Pros and cons of package private classes in Java?8个
我喜欢任何语言的访问控制,但我发现在Java中我几乎从不(如果曾经)使用 package-private访问修饰符(或缺少它).

我意识到内部类可以是私有的,受保护的或包私有的,但外部类只能是包私有或公共的.为什么外部类可以是包私有但不受保护?限制整个包可以看到的类/方法/字段有什么好处,而不是子类?

解决方法

当我想隐藏包外的用户(和其他类)的实现细节时,我使用包私有类和方法.

例如,如果我有一个接口和一个工厂类来创建该接口的实例,我可能将实现类作为一个单独的文件,但将其标记为package-private,以便其他人不能使用它,也不会混乱JavaDoc(如果是javadoc)设置为仅显示公共).

如果密封jar文件,package-private方法也可以帮助限制谁可以访问这些方法.如果方法是公共的或受保护的,则子类仍然可以查看并调用该方法,即使它位于不同的包中. (未密封的jar允许任何人在你的包中创建类,以便他们可以访问包私有或受保护的方法)

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...