美文网首页
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