加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 08:38:54 所属栏目:Java 来源:网络整理
导读:有没有办法获取方法对象而不必使用方法的名称来获取它? 例如,我有班级: class Car { public String drive(); public String giveUp(); public String fillUp();} 我想创建一个Map String,Method方法(又名:(“move”,drive()),(“name”,giveUp()),….).
有没有办法获取方法对象而不必使用方法的名称来获取它?

例如,我有班级:

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类型的默认属性.然后使用反射来获取所有方法及其注释,并使用注释值作为键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读