如何使 package-private 类 只对其他一个包可见?

How to do package-private classes visible for other one package only?

我想实现最佳封装的包,但要测试一下。我怎样才能使一个包的包私有成员仅对另一个(友好)包可见?

根据定义,包私有成员对包外的 类 不可见。这表明您正在尝试做一些您不应该做的事情,即使您正在测试也是如此。

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

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

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

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

你提到了测试,所以我假设你想 "see" 在你的测试中使用这些东西。只需将您的测试 classes 定义为与您的生产代码位于同一个包中(不在同一个 目录 中)。