Java 反射调用的方法列表

Java 反射调用的方法列表,java,jakarta-ee,reflection,Java,Jakarta Ee,Reflection,我正在研究J2EE应用程序,我们经常遇到这样的问题:我们不确定某个方法是否在运行时被反射调用 你知道我怎样才能找到所有这样的地方吗?通常在这种情况下,如果测试做得正确且足够彻底,你可以尝试删除怀疑未使用的代码段,然后运行完整的测试套件,如果一切正常,那么就好,否则你可以根据失败的测试缩小范围 但现实世界往往不是如此完美 我的最佳选择是使用基于文本内容的搜索(例如,记事本+++“搜索文件”作为一个选项),通过您的所有代码库(也可以遍历JAR和编译类)搜索方法名,因为如果有人调用它,它至少应该通过方

我正在研究J2EE应用程序,我们经常遇到这样的问题:我们不确定某个方法是否在运行时被反射调用


你知道我怎样才能找到所有这样的地方吗?

通常在这种情况下,如果测试做得正确且足够彻底,你可以尝试删除怀疑未使用的代码段,然后运行完整的测试套件,如果一切正常,那么就好,否则你可以根据失败的测试缩小范围

但现实世界往往不是如此完美

我的最佳选择是使用基于文本内容的搜索(例如,记事本+++“搜索文件”作为一个选项),通过您的所有代码库(也可以遍历JAR和编译类)搜索方法名,因为如果有人调用它,它至少应该通过方法名来完成

(请注意,这不是一个一刀切的解决方案,因为不同的东西可以以不同的模糊方式调用,例如,方法并不总是以全名调用。)

例如,在代码库中可能会发生类似的情况:

for (Method m : allMethods) {
    String mname = m.getName();
    if (mname.startsWith("mySpecialPartialHandle")){
        // Invoke mySpecialPartialHandleMethodWithTrailingWords()
    }
}
不过值得一试


名字越常见,你就越需要在返回的结果中挖掘。

@Pshemo-请详细描述你的想法?@Paweł出于好奇,你需要这些信息做什么?你怎么可能知道?假设您有一个允许根据用户输入调用方法的代码路径。。。这意味着(您有权访问的)任何东西都可以通过反射来调用。如果您正在寻找对特定对象的方法调用,是否可以使用
java.lang.reflect.Proxy
?@AdamSiemion-我使用大型应用程序,有时您会发现方法似乎未使用(代码中没有引用),但您必须始终检查反射是否调用了它。所以有这样的列表是很有用的,这样你就不用每次都检查了。