我什么时候在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中使用package-private? - 代码日志