The invention discloses a Java reflection implementation method, device and system. The reflection implementations include: when Java virtual machine starts class loading, using Java bytecode framework ASM to generate reflection processing classes for Java classes; retrieving index values of Java classes from reflection processing classes; storing reflection processing classes and index values into caches; binding reflection processing classes and index values to Java classes through caches; and caching-based. Reflective processing class and index value, reflection calls Java class method. According to the Java reflection implementation method provided in the embodiment of the present invention, the performance and efficiency of Java reflection can be improved by adopting the reflection implementation method based on Java bytecode framework ASM and cache.
【技术实现步骤摘要】
Java反射实现方法、装置和系统
本专利技术涉及计算机
,尤其涉及Java反射实现方法、装置和系统。
技术介绍
Java反射机制主要是指程序运行时,允许访问、检测和修改自身状态或行为的一种能力。在Java项目开发过程中,为了程序的灵活性经常会用到Java反射机制,它能够方便程序员创建灵活的代码,这些代码可以在运行时装配,而无需重新修改代码并重新编译。Java反射机制的优点主要体现在它的动态性方面,并且可以降低类之间的藕合性,大大提高系统的灵活性和扩展性,同时与Java动态编译相结合,可以实现强大的功能。通常,运行一个Java程序,首先Java类必须被Java虚拟机加载,运行程序都是在编译时就已经加载了所需要的类。“编译时”是指编译器把Java代码翻译成设备可以识别的代码,编译器在编译时会检查语法有无错误、关键字或者名称书写有无错误,然后加载类;“运行时”是指程序开始,代码被装载到内存中后,运行时检查就是在内存中做相关检查与判断。Java的反射机制在编译时并不确定是哪个类被加载了,而是在程序运行时才加载和使用。Java反射过程需要在运行时做一些编译的工作和解释操作,如语法检查、解析字节码、将内存中的对象进行解析等,Java虚拟机无法对代码进行优化,因此通过Java反射调用类的方法的效率要比直接调用低,性能比直接调用慢。
技术实现思路
本专利技术实施例提供Java反射实现方法、装置和系统,可以提高Java反射调用的效率和性能。根据本专利技术实施例的一方面,提供一种Java反射实现方法,包括:Java虚拟机启动类加载时,利用Java字节码框架ASM为Java类 ...
【技术保护点】
1.一种Java反射实现方法,其特征在于,所述实现方法包括:Java虚拟机启动类加载时,利用Java字节码框架ASM为Java类生成反射处理类;从所述反射处理类中获取所述Java类的方法的索引值;将所述反射处理类和所述索引值存入缓存,所述反射处理类和所述索引值通过所述缓存与所述Java类绑定;基于所述缓存中的反射处理类和所述索引值,反射调用所述Java类的方法。
【技术特征摘要】
1.一种Java反射实现方法,其特征在于,所述实现方法包括:Java虚拟机启动类加载时,利用Java字节码框架ASM为Java类生成反射处理类;从所述反射处理类中获取所述Java类的方法的索引值;将所述反射处理类和所述索引值存入缓存,所述反射处理类和所述索引值通过所述缓存与所述Java类绑定;基于所述缓存中的反射处理类和所述索引值,反射调用所述Java类的方法。2.根据权利要求1所述的实现方法,其特征在于,所述将所述反射处理类和所述索引值存入缓存,包括:生成与所述Java类的方法对应的反射方法对象;在所述反射方法对象中封装所述反射处理类和所述索引值;将所述反射方法对象存入所述缓存。3.根据权利要求2所述的实现方法,其特征在于,所述将所述反射方法对象存入所述缓存,包括:创建所述Java类的反射方法缓存对象,在所述反射方法缓存对象中保存所述反射方法对象;将所述反射方法缓存对象存入所述缓存。4.根据权利要求1所述的实现方法,其特征在于,所述基于所述缓存中的反射处理类和所述索引值,反射调用所述Java类的方法,包括:根据所述Java类的类名从所述缓存中提取所述反射处理类和所述索引值;通过所述索引值定位所述反射处理类中的所述Java类的方法。5.根据权利要求4所述的实现方法,其特征在于,所述根据所述Java类的类名从所述缓存中提取所述反射处理类和所述索引值,包括:通过所述Java类的类名获取所述缓存中与所述Java类对应的反射方法缓存对象;根据所述Java类的方法的方法名从所述反射方法缓存对象中获取与所述Java类的方法对应的反射方法对象;从所述反射方法对象中提取所述反射处理类和所述索引值。6.一种Java反射实现装置,其特征在于,所述实现装置包括:反射处理类生成模块,用于Java虚拟机启动类加载时,利用Java字节码框架ASM为Java类生成反射处理类;方法索引值获取模块,用于从所述反射处理类中获取所述Java类的方法的索引值;缓存模块,用于将所述反射处理类和所述索引值存入缓存,所述反射处理类和所述索引值通过所述缓存与所述Java类绑定;反射调用模块,用于基于所述缓存中的反射处理类和所述索引值,反射调用所...
【专利技术属性】
技术研发人员:叶荣光,魏建荣,陈翔宇,
申请(专利权)人:中国移动通信集团福建有限公司,中国移动通信集团公司,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。