如何只为其他一个包显示包私有类?

时间:2016-10-03 02:56:19

标签: java unit-testing package encapsulation access-specifier

我想实现具有最佳封装的包,但要测试它。如何才能将一个包的包私有成员仅对其他一个(友好)包可见?

2 个答案:

答案 0 :(得分:2)

是的,可以做到。有点......

包含私有内容对于相同包中的其他类是可见的,但不一定是相同目录

您可以将类声明为位于同一个包中,但将其放在另一个目录结构(例如您的测试代码)中,甚至放在另一个项目中。

你提到过测试,所以我假设你想要"看"这些东西在你的测试中。只需将测试类定义为与生产代码位于同一个包(不是相同的目录)中。

答案 1 :(得分:1)

根据定义,package-private成员对包外的类不可见。这表明你正在尝试做一些你不应该做的事情,即使你正在测试。

你可以用吸气剂或反射来解决它,但我首先要看看你是否需要访问这样的成员。如果是内部状态,则不应该对其进行测试。如果不是,那么吸气剂可能是合适的。或者将测试放在同一个包中(但可能存储在不同的目录树中)。