[发明专利]获取参数名和局部变量名的方法、装置、设备及存储介质有效
申请号: | 201810426003.X | 申请日: | 2018-05-07 |
公开(公告)号: | CN108628635B | 公开(公告)日: | 2021-12-14 |
发明(设计)人: | 林锡鑫 | 申请(专利权)人: | 广州视源电子科技股份有限公司;广州视睿电子科技有限公司 |
主分类号: | G06F8/74 | 分类号: | G06F8/74;G06F8/30 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 510530 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 获取 参数 局部 变量 方法 装置 设备 存储 介质 | ||
本发明公开了一种获取参数名和局部变量名的方法、装置、设备及存储介质。包括:解析源代码中的注解标记并修改源代码,修改后的源代码的预设代码行添加有识别标记;通过反射机制获取修改后的源代码中类的成员函数参数名;运行修改后的源代码获取局部变量名。本方法通过在源代码中添加入自定义注解,可以兼容Java5以上的各个版本,实现对参数名和局部变量的获取。本方法可以防止字节码变大,极大的降低获取参数名和局部变量名的难度,同时提高了编译器处理速率。
技术领域
本发明实施例涉及代码编译技术,尤其涉及一种获取参数名和局部变量名的方法、装置、设备及存储介质。
背景技术
Java语言是一种解释型语言。Java源代码经过编译,生成java指令文件,所生成的java指令文件在Java虚拟机中解释执行。
在Java的编译和测试过程中,通常需要获取Java变量名称。目前主要有两种获得Java变量名称的方式。一种是针对Java8,可通过使用–parameters参数编译为class文件后,保留参数名字,然后通过反射的方式获取参数名。一种是除Java8以外的版本,只用有在编译时使用了-g或-g:vars参数生成了调试信息,在class文件中才会生成方法参数名信息(在本地变量表LocalVariableTable中),但还要通过字节码分析工具才能拿到参数信息。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:获取Java参数名和局部变量名时,需要引入字节码分析库,先对字节码进行操作才能拿到参数信息,操作复杂,而且对效率会有很大影响。
发明内容
本发明提供一种获取参数名和局部变量名的方法、装置、设备及存储介质,以实现兼容Java6、Java7和Java8等多个版本,同时在不引入字节码分析库的情况下获得Java中的参数名和局部变量名。
第一方面,本发明实施例提供了一种获取参数名和局部变量名的方法,包括:
解析源代码中的注解标记并修改源代码,修改后的源代码的预设代码行添加有识别标记;
通过反射机制获取修改后的源代码中类的成员函数参数名;
运行修改后的源代码获取局部变量名。
第二方面,本发明实施例还提供了一种获取参数名和局部变量名的装置,包括:
代码解析模块,用于解析源代码中的注解标记并修改源代码,修改后的源代码的预设代码行添加有识别标记;
参数名获取模块,用于通过反射机制获取修改后的源代码中类的成员函数参数名;
局部变量获取模块,用于运行修改后的源代码获取局部变量名。
第三方面,本发明实施例还提供了一种设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例中任一所述的获取参数名和局部变量名的方法。
第四方面,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例中任一所述的获取参数名和局部变量名的方法。
本发明通过使用第一注解字段,解决了获取参数名和局部变量名时,需要引入字节码分析库,先对字节码进行操作才能拿到参数信息的问题,实现兼容多个Java版本获取Java的参数名和局部变量名。
附图说明
图1是本发明实施例一提供的一种获取参数名和局部变量名的方法的流程图;
图2为本发明实施例二提供的一种获取参数名和局部变量名的方法的流程图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州视源电子科技股份有限公司;广州视睿电子科技有限公司,未经广州视源电子科技股份有限公司;广州视睿电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810426003.X/2.html,转载请声明来源钻瓜专利网。