我正在努力打包 API 以供公众使用。因此,我试图将公开的方法仅限于那些我希望公开和支持的方法。当然,在此之下还有许多受限的访问方法。
问题是我有很多内部代码需要访问这些受限制的方法而不公开这些方法。这会产生两个问题:
- 我无法创建接口(interface) 像这样在类之间进行通信 将使这些成为我的内部方法 公开。
- 我无法访问 protected 或默认的 方法,除非我把大部分 我的内部类(class)在同一个 包。
因此,我有大约 70 或 80 个内部类在完全隔离的包中,但具有过于宽松的访问修饰符。您会说单个包是两害相权取其轻,还是有更好的方法来掩盖我的内部方法,同时保留更细粒度的包?
我很想在这里找到最佳实践。
我已经知道 This
最佳答案
对于您的问题,有两种解决方案不涉及将所有类保存在同一个包中。
首先是使用 Friend Accessor/Friend Package (实用 API 设计,Tulach 2008)中描述的模式。
第二种是使用OSGi。有文章here解释 OSGi 是如何做到这一点的。
关于java - 我的内部 API 类应该全部放在一个包中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934165/