java内容寻址_java – 获取方法对象而不按名称寻址方法

有没有办法获取方法对象而不必使用方法的名称来获取它?

例如,我有班级:

class Car {

public String drive();

public String giveUp();

public String fillUp();

}

我想创建一个Map< String,Method>方法(又名:(“move”,drive()),(“name”,giveUp()),….).

由于使用了混淆,我无法通过名称获取方法对象.有没有办法获取方法名称而不必绑定它?

我想另一种问这个问题的方法是:

对于有getClass()的类,是否有方法的等价物?我正在寻找像giveUp.Method一样的东西.

解决方法:

Java中没有Car.giveUp.method()这样的构造,因为方法不像类和对象那样是“一等公民”.

在不知道混淆器对代码做什么或添加其他信息的情况下,您无法区分这些方法,因为除了名称之外,它们具有相同的签名.

>某些混淆器生成将原始名称映射到混淆名称的文本文件,您可以使用该映射文件在运行时标识混淆方法.

>您可以在方法中添加注释,例如

@MappedMethod("move")

public String drive();

使用自编写的注释@MappedMethod和String类型的默认属性.然后使用反射来获取所有方法及其注释,并使用注释值作为键.

标签:java,reflection,obfuscation

来源: https://codeday.me/bug/20190730/1579343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值