我正在开发的 java 库中使用 google Reflections。我使用 Reflections 的原因是因为我想找到所有带有特定注释的类。简化事情,在我的库中,我有一个回答这些类的方法,它通过如下行调用:
//this method uses the Reflections library
Repository.getDefault().getMyAnnotatedClasses()
在我的库的当前版本中,我要求用户在反射库需要查找带注释的类的位置显式添加包名称:
Repository.getDefault().addSearchPath("...");
通过这种方式,反射将查找仅位于该包中的类。
如果我的库的用户没有添加此搜索路径,我将反射配置为在系统类加载器中的所有类中搜索。显然,这种解决方案效率很低。但是,我真的想摆脱要求用户始终设置搜索路径的要求。- 如果它很重要,请注意:在反射中,您可以使用包名称、url(可以找到类的类路径)或类加载器配置搜索路径。
所以我的问题是:有没有办法找到调用我的库的类的类路径?(来自我的图书馆代码)。这样,我可以检测到如果用户没有明确设置搜索位置,我会默认添加该位置,这似乎比添加整个系统类加载器作为替代搜索路径更好的解决方案。
我知道我可以从我的库代码中手动检查方法调用堆栈,但这似乎有点笨拙和肮脏的解决方案,所以我正在寻找替代的想法。
提前致谢。