有没有办法不用方法名就可以获取方法对象?
例如我有一个类:
class Car {
public String drive();
public String giveUp();
public String fillUp();
}
我想创建一个 Map<String, Method>
方法(又名:(“移动”,驱动器()),(“名称”,giveUp()),....)。
由于使用了混淆,我无法通过名称获取方法对象。有没有办法在不必绑定(bind)这个的情况下获取方法名称?
我猜另一种问法是:
对于一个有 getClass() 的类,是否有等效的方法?我正在寻找与 giveUp.Method 类似的东西。
最佳答案
Java 中没有Car.giveUp.method()
这样的结构,因为方法不像类和对象那样是“一等公民”。
如果不知道混淆器对您的代码做了什么,或者添加了额外的信息,您就无法区分这些方法,因为除了它们的名称之外,它们具有相同的签名。
一些混淆器会生成将原始名称映射到混淆后名称的文本文件,您可以使用该映射文件在运行时识别混淆方法。
你可以给这个方法添加一个注解,比如
@MappedMethod("move") public String drive();
带有一个自写的注解
@MappedMethod
和一个类型为String
的默认属性。然后使用反射获取所有方法及其注解,并使用注解值作为key。
关于java - 获取方法对象而不按名称寻址方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304040/