Java 如何安全地删除一个方法,如何知道它是否';它不是被反射所使用的吗?

Java 如何安全地删除一个方法,如何知道它是否';它不是被反射所使用的吗?,java,android,reflection,Java,Android,Reflection,我有一个方法,我知道它不是整个Android项目的引用,但我在这里和那里看到了一些反映(它的遗留代码,我不熟悉)。 如何确定反射是否在某处调用它,以便安全地删除它?如果使用Android Studio,请在方法(或变量)上按Alt+F7,它将显示它的所有用法。 例如,如果使用Eclipse,请尝试在total commander的项目目录中搜索函数名。 如果你需要更多信息,请告诉我 在一个完全通用的环境中,我认为这是不可能的。你需要检查像这样的东西 Class.forName("some.pkg

我有一个方法,我知道它不是整个Android项目的引用,但我在这里和那里看到了一些反映(它的遗留代码,我不熟悉)。
如何确定反射是否在某处调用它,以便安全地删除它?

如果使用Android Studio,请在方法(或变量)上按Alt+F7,它将显示它的所有用法。 例如,如果使用Eclipse,请尝试在total commander的项目目录中搜索函数名。
如果你需要更多信息,请告诉我

在一个完全通用的环境中,我认为这是不可能的。你需要检查像这样的东西

Class.forName("some.pkg.here.and.SomeClass");
以及

Class.forName(packageName + "." + className);
反射的使用也可以隐藏在库后面

如果你有测试,那就容易多了。只需删除它并运行测试


您还可以将日志添加到希望删除的旧方法中,并从中进行检查。

取决于它们通过反射使用日志:对于全名使用,您可以在文件中查找(作为文本)。如果他们(在运行时)构造它,那么您在搜索时会遇到困难。

我知道这一点,但这是否考虑了使用反射的调用?一个有趣的问题。这取决于一个项目,但我想没有简单的方法。例如,若方法的名称是在运行时动态构造的,那个么即使是非常智能的分析器也不会检测到这种情况。我将从项目中消除所有反射用法,或者至少将所有反射用法放在特定的位置。