[发明专利]代码生成方法及装置有效
申请号: | 201610848969.3 | 申请日: | 2016-09-23 |
公开(公告)号: | CN107025105B | 公开(公告)日: | 2020-10-16 |
发明(设计)人: | 陈颖娴 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 北京市惠诚律师事务所 11353 | 代理人: | 刘子敬 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 生成 方法 装置 | ||
本发明提供了一种代码生成方法及装置,其中,方法包括:运行在虚拟机中的第一实例在创建新类的过程中,通过执行第一实例中包含的第一代码,从类库中获取目标类的属性或方法的第二代码并将获取到的第二代码作为该新类的属性或方法的代码写入到所述新类中。本发明在新类的创建过程中,通过执行预设的第一代码来动态获取目标类的属性或方法的第二代码,并写入到新类中,通过这样的机制,可以将主程序中包含的板式代码的部分用上述第一代码代替,然后在源代码经过编译器的编译后,在实例运行的过程中,动态地获取与板式代码的内容对应的第二代码,并固化到新类中作为该新类代码的一部分,从而能够极大节省系统的开销,提高代码的执行效率。
技术领域
本发明实施例一种代码生成方法及装置,属于计算机技术领域。
背景技术
目前的软件程序越来越复杂,代码的规模也越来越庞大,这其中,存在大量重复或者相类似的代码,大量重复的代码会给代码维护人员的维护工作造成很大的困难,例如,类中任意一个属性值的变化,都会导致多处代码的变更,维护人员维护起来十分困难,并且非常容易出错,导致无法编译通过或者即使编译通过也出现运行错误等。以较为常用的Java为例,在Java程序中,经常会存在代码结构近似但Java语法无法消除的重复代码,这种代码称之为板式代码。
现有技术中提出了针对板式代码引入反射机制,Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。通过引入反射机制,在程序运行过程中,在需要执行该部分代码时,动态调用板式代码所对应的类的属性和方法,从而减少针对板式代码的维护。
但是,反射机制的缺陷也很明显,由于编译器不能对反射机制所涉及的代码进行优化,所有的操作都需要按照反射机制的程序来执行,即采用类似查表的操作,要遍历目标类的全部类结构,然后才能完成对类的属性和方法的调用。而在实际的程序运行的过程中,针对同一部分板式代码可能要执行许多次,而每次都需要通过反射机制来进行调用,其运行效率极低,会导致较大的系统开销,尤其在涉及大量的属性信息进行操作的场景,其系统开销将会更大。
发明内容
本发明实施例的目的在于提供一种代码生成方法及装置,以提高代码执行效率,节省系统开销。
为了实现上述目的,本发明实施例提供了一种代码生成方法,包括:
运行在虚拟机中的第一实例在创建新类的过程中,通过执行第一实例中包含的第一代码,执行如下处理:
从类库中获取目标类的属性或方法的第二代码;
将获取到的第二代码作为该新类的属性或方法的代码写入到所述新类中,
其中,所述第一代码中包括目标类的属性或者方法的名称,在源代码中,板式代码对应的部分被所述第一代码替代,所述第二代码的内容对应于所述板式代码,所述第一实例为根据所述源代码生成的实例,所述第二代码为字节码。
本发明实施例还提供了一种代码生成装置,包括代码获取模块和代码写入模块,所述代码获取模块和代码吸入模块处于运行在虚拟机中的第一实例中:
所述代码获取模块,用于在第一实例创建新类的过程中,通过执行第一实例中包含的第一代码,从类库中获取目标类的属性或方法的第二代码;
所述代码写入模块,用于在第一实例创建新类的过程中,通过执行第一实例中包含的第一代码,将获取到的第二代码作为该新类的属性或方法的代码写入到所述新类中;
其中,所述第一代码中包括目标类的属性或者方法的名称,在源代码中,板式代码对应的部分被所述第一代码替代,所述第二代码的内容对应于所述板式代码,所述第一实例为根据所述源代码生成的实例,所述第二代码为字节码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610848969.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:具对数计算功能的解码模块
- 下一篇:DMA队列切换方法和系统