美文网首页
Java对类魔法加工的一些技术

Java对类魔法加工的一些技术

作者: 嘻嘻是小猪 | 来源:发表于2020-09-24 16:26 被阅读0次
  • 运行时注解
    在运行时拿到类的Class对象,反射机制利用之

  • 编译时注解
    生成的Java代码是在生成的.java文件中,所以你不能修改已经存在的Java类,例如向已有的类中添加方法。这 些生成的Java文件,会同其他普通的手动编写的Java源代码一样被javac编译。因为没有反射,效率和直接调用方法没什么区别。ParcelableGenerator、butterknife 、androidannotaion都使用了类似技术。
    涉及到Annotation Processor
    java 编译时注解处理
    Java 《注解篇》 编译时注解

  • JDK动态代理
    为已有类方法增加新功能,本质是利用字节码操纵技术,生成新的与原生类有相同接口 的com.sun.proxy.$ProxyXXXX.class。并在Proxy.newProxyInstance方法中,会先load这个代理class, 然后通过反射构造代理类的实例

  • Cglib动态代理
    也是为类方法增进新功能,也是通过字节码操纵,和JDK动态代理区别在于,新生类不用和原类实现同一接口。cglib主要靠的是继承关系
    Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

  • JVM启动前静态Instrument
    main函数执行前,对正在加载中的类修改其字节码,涉及javaagent/java.lang.instrument.ClassFileTransformer/字节码操纵技术等

  • JVM启动后动态Instrument
    main 函数开始运行之后,对正在加载的类修改其字节码,涉及javaagent/java.lang.instrument.ClassFileTransformer/字节码操纵技术等

    javaagent使用指南

相关文章

网友评论

      本文标题:Java对类魔法加工的一些技术

      本文链接:https://www.haomeiwen.com/subject/bdzzyktx.html