Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在包之间共享低级实用程序类,但不将其公开给公共API?_Java_Packages - Fatal编程技术网

Java 如何在包之间共享低级实用程序类,但不将其公开给公共API?

Java 如何在包之间共享低级实用程序类,但不将其公开给公共API?,java,packages,Java,Packages,我有一个库项目,我想限制公共API,但我也有一些在一些包之间共享的低级实用程序类。我需要公开访问这些实用程序类,但我不想在库的公共API中公开它们 我曾考虑过做反射,但对于这个应用程序来说似乎有点混乱 任何帮助都将不胜感激 问题在于您的实用程序类位于不同的包中,否则您可能会使用包保护的可见性 如果性能不是问题,那么可以在实用程序类的构造函数中构建堆栈跟踪()。然后,您可以检查构造函数调用方的调用堆栈,如果“立即”调用方不是来自库的包/类,则引发运行时异常。不要在API文档中包含这些类,或者在文档

我有一个库项目,我想限制公共API,但我也有一些在一些包之间共享的低级实用程序类。我需要公开访问这些实用程序类,但我不想在库的公共API中公开它们

我曾考虑过做反射,但对于这个应用程序来说似乎有点混乱


任何帮助都将不胜感激

问题在于您的实用程序类位于不同的包中,否则您可能会使用包保护的可见性


如果性能不是问题,那么可以在实用程序类的构造函数中构建堆栈跟踪()。然后,您可以检查构造函数调用方的调用堆栈,如果“立即”调用方不是来自库的包/类,则引发运行时异常。

不要在API文档中包含这些类,或者在文档中加上粗体警告:此类仅供内部使用,可能会在将来的API版本中更改或删除。不要使用它


将这些类放在
com.foo.bar.internal
包中也很有用。

apache就是这样做的。例如,我们考虑使用internal.internal包,但不知道这是否有意义