Java 如何在包之间共享低级实用程序类,但不将其公开给公共API?
我有一个库项目,我想限制公共API,但我也有一些在一些包之间共享的低级实用程序类。我需要公开访问这些实用程序类,但我不想在库的公共API中公开它们 我曾考虑过做反射,但对于这个应用程序来说似乎有点混乱Java 如何在包之间共享低级实用程序类,但不将其公开给公共API?,java,packages,Java,Packages,我有一个库项目,我想限制公共API,但我也有一些在一些包之间共享的低级实用程序类。我需要公开访问这些实用程序类,但我不想在库的公共API中公开它们 我曾考虑过做反射,但对于这个应用程序来说似乎有点混乱 任何帮助都将不胜感激 问题在于您的实用程序类位于不同的包中,否则您可能会使用包保护的可见性 如果性能不是问题,那么可以在实用程序类的构造函数中构建堆栈跟踪()。然后,您可以检查构造函数调用方的调用堆栈,如果“立即”调用方不是来自库的包/类,则引发运行时异常。不要在API文档中包含这些类,或者在文档
任何帮助都将不胜感激 问题在于您的实用程序类位于不同的包中,否则您可能会使用包保护的可见性
如果性能不是问题,那么可以在实用程序类的构造函数中构建堆栈跟踪()。然后,您可以检查构造函数调用方的调用堆栈,如果“立即”调用方不是来自库的包/类,则引发运行时异常。不要在API文档中包含这些类,或者在文档中加上粗体警告:此类仅供内部使用,可能会在将来的API版本中更改或删除。不要使用它
将这些类放在
com.foo.bar.internal
包中也很有用。apache就是这样做的。例如,我们考虑使用internal.internal包,但不知道这是否有意义