我们正在构建一个引擎,允许我们随时添加新的 jar 文件,加载这些 jar 文件并查找某些特定功能,并运行公开该功能的代码。目前的计划是使用 ServiceLoader 来执行此操作(只是一个额外的细节;我不同意这个想法)。目前让我们假设我们完全控制要加载哪些 jar 文件(很大的假设——我想我最终也会发布一些关于它的内容)。
鉴于这一切,我想限制对某些类的这些扩展的访问。对于一个假的例子,我们要确保java.io.PrintStream
他们使用 而不是使用our.better.PrintStreamSolution
。
我真的不知道我能在这里做什么。由于目前我们拥有将作为扩展发布的代码,我们可以进行非常彻底的代码审查,但我宁愿在安装时进行静态分析,或者在运行时实际抛出错误。知道如何实现这一目标吗?