【发布时间】:2013-10-24 16:46:00
【问题描述】:
我们正在创建一个用于 Android 的 android 库。这意味着类似 Eclipse 的 IDE 和类似 Ant 的构建过程。
库的本质是它有两个不同的部分,代表不同的抽象级别——比如说“上层”和“下层”。
假设,出于这个问题的目的,我们需要从另一部分调用方法,但希望对库用户隐藏这些方法。我已经搜索了常用的参考资料,但它们都停留在解释包名称约定和范围规则的地方。尽管this 很有用,但我在 SO 上找不到任何答案。
直接的解决方案是将所有内容简单地放在一个包中,并将这些方法设为包私有。但是,出于可维护性、清晰性和一个文件夹中没有 100 个文件的原因,我们更愿意将这些部分拆分到不同的文件夹中。
明显的拆分点是将(比如说“wibble”)包拆分为com.me.wibble.upper 和com.me.wibble.lower 包/文件夹,但这会使任何互连方法都公开。为了缓解问题,可以使用 @hide 将它们从 javadoc 中隐藏起来。
另一个想法是我们是否可以在顶层拆分部分,而不是经典的 /main 和 /test 文件夹具有 /upper、/lower 和 /test 并且所有部分共享相同的 com.me.wibble命名空间。我不确定 Eclipse 是否/如何应对。
是否有传统的方法可以做到这一点,或者只是没有这样做?如果有办法,优点和缺点是什么?
【问题讨论】:
-
你考虑过使用reflection吗?有了它,您可以将所有方法保持私有,但将代码保存在单独的包中。
-
哎呀!反射没有什么隐私! tutorials.jenkov.com/java-reflection/…
-
@Tanis 我不考虑反思。我的背景是 C (不会有这个原始问题 ;-) 所以我正在寻找一个“正常”的解决方案,但感谢您的建议;和警告,Pedantic。