返回顶部

收藏

javassist给方法添加注解

更多
package cn.outofmemory.hello.javassist;

import javassist.*;
import javassist.bytecode.AnnotationsAttribute;
import javassist.bytecode.ClassFile;
import javassist.bytecode.ConstPool;
import javassist.bytecode.annotation.Annotation;
import javassist.bytecode.annotation.IntegerMemberValue;

import java.io.IOException;

/**
 * add annotation with javassist
 * Created by outofmemory.cn on 2015/12/14.
 */
public class App {
    public static void main(String[] args) throws CannotCompileException, IOException {
        ClassPool pool = ClassPool.getDefault();

        // create the class
        CtClass cc = pool.makeClass("foo");
        ClassFile ccFile = cc.getClassFile();
        ConstPool constpool = ccFile.getConstPool();

        // create the annotation
        AnnotationsAttribute attr = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag);
        Annotation annot = new Annotation("MyAnnotation", constpool);
        annot.addMemberValue("value", new IntegerMemberValue(ccFile.getConstPool(), 0));
        attr.addAnnotation(annot);

        // create the method
        CtMethod mthd = CtNewMethod.make("public Integer getInteger() { return null; }", cc);
        cc.addMethod(mthd);
        mthd.getMethodInfo().addAttribute(attr);

        cc.writeFile("./");
        // generate the class
        Class<?> clazz = cc.toClass();

        // length is zero
        java.lang.annotation.Annotation[] annots = clazz.getAnnotations();
    }
}

标签:java,javassist

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. admin 发表 2013-11-13 04:38:59 javassist这货到底干嘛的?
  2. Harries 发表 2016-03-13 18:25:06 Java String 对 null 对象的巧妙处理
  3. rain 发表 2016-03-16 15:46:46 掌握 Java 8 Lambda 表达式
  4. 刘莉莉 发表 2016-03-19 14:24:43 快学scala笔记——映射和元组
  5. jabbany 发表 2012-12-12 06:43:06 在Java下用AWT原生绘图制作3D贪食蛇
  6. liuchi1993 发表 2016-03-25 14:22:38 JAVA文件中获取路径及WEB应用程序获取路径方法
  7. 博主 发表 2016-03-26 07:55:00 Functional Interface - Consumer and BiConsumber
  8. H.E. 发表 2010-04-08 10:23:37 MongoDB Java ORM 的设想
  9. 博主 发表 2015-12-29 14:26:50 Java 最佳实践
  10. 久酷 发表 2012-08-04 04:49:02 JC-DDNS 免费动态域名解析软件(JAVA开发)
  11. 博主 发表 2016-03-24 13:03:37 HotSpot 虚拟机的算法实现
  12. textbox 发表 2012-11-13 05:32:00 Java B/S开发模式漫谈(转)

发表评论