我正在设计一个库,虽然我知道我只应该让public
我希望客户端访问的类,但我很难坚持这个最佳实践。据我所知,这是最好的做法。我决定将一个名为internal
的包放在我的库中的一个包中,以保存我打算成为包私有的类,但可能最终为public
。
程序包在Java中工作的方式似乎有缺陷,因为你不能把一个类“父包 - 私有”,所以当涉及到这样的问题时,真的是一个“坏习惯”吗?
答案 0 :(得分:3)
等待Java 9,事情就会清理完毕。新的 模块结构将允许限制公众 模块外的任何地方的课程。
但即便到那时,请注意访问权限并非真正可执行。通过正确使用反射,您可以访问任何内容,甚至是私有的(不确定,但我认为Java 9的模块不会通过反射访问)。
访问修饰符仅仅是对用户的注释"不依赖于我,我可能会改变"。如果无法使用访问修饰符,我认为以其他方式提供该注释是完全可以的。甚至JDK都有sun
和com.sun
个完全可访问的软件包,但每个人都知道你不应该在它们上构建代码。
查看一些流行的API,我经常找到包名internal
,所以你可以恕我直言。