我是靠谱客的博主 干净秋天,最近开发中收集的这篇文章主要介绍ASM 系列详细教程-15-ASM ReflectASM 入门案例详细介绍及实战reflectasm使用例子思考拓展阅读参考文档,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

reflectasm

reflectasm is a very small Java library that provides high performance reflection by using code generation.

An access class is generated to set/get fields, call methods, or create a new instance.

The access class uses bytecode rather than Java’s reflection, so it is much faster.

It can also access primitive fields via bytecode to avoid boxing.

使用例子

Maven 引入

<dependency>
    <groupId>com.esotericsoftware</groupId>
    <artifactId>reflectasm</artifactId>
    <version>1.11.9</version>
</dependency>

测试代码

对象定义

public class UserService {

    private String name;

    public UserService() {
        this("default");
    }

    public UserService(String name) {
        this.name = name;
    }

    public void showName() {
        System.out.println("Name is: " + name);
    }

}

方法验证

UserService someObject = new UserService("ryo");
MethodAccess access = MethodAccess.get(UserService.class);
access.invoke(someObject, "showName");

构造器验证

发现不支持有参构造器,这点我们可以进行提升。

ConstructorAccess<UserService> access = ConstructorAccess.get(UserService.class);
UserService someObject = access.newInstance();
someObject.showName();

字段构造器

字段默认也无法反射私有变量,这也非常的麻烦。

UserService someObject = new UserService();
FieldAccess access = FieldAccess.get(UserService.class);

for(int i = 0; i < access.getFieldCount(); i++) {
    System.out.println(access.get(someObject, i));
}

思考

ReflectASM 的思想非常好,通过 asm 创建一个集成类。然后所有的实现都是直接通过调用,性能是优于反射的。

缺点

如上面所述,功能还是过于简单。

当然,我们也可以根据这种思想,结合 asm 处理所有的字段信息。

构建一个依赖于 asm 强大的工具包。

实战项目

利用 reflectasm 实现对象拷贝,性能超过 spring BeanUtils 拷贝工具。

bean-mapping

拓展阅读

更多技术文章,生活趣事,尽在【老马啸西风】。

老马啸西风

参考文档

https://asm.ow2.io/asm4-guide.pdf

reflectasm

最后

以上就是干净秋天为你收集整理的ASM 系列详细教程-15-ASM ReflectASM 入门案例详细介绍及实战reflectasm使用例子思考拓展阅读参考文档的全部内容,希望文章能够帮你解决ASM 系列详细教程-15-ASM ReflectASM 入门案例详细介绍及实战reflectasm使用例子思考拓展阅读参考文档所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部