返回顶部

收藏

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. 博主 发表 2014-11-23 15:13:53 Java类中的初始化顺序
  3. 博主 发表 2014-12-09 06:55:12 Java performance tips
  4. importnewzz 发表 2014-12-23 02:35:44 Java 注解指导手册 – 终极向导
  5. Fowler Zhang 发表 2014-11-18 03:46:34 Java多线程-工具篇-BlockingQueue
  6. 妙音 发表 2014-12-31 03:04:36 jetty-maven-plugin静态文件保存不了
  7. noblog 发表 2015-01-05 06:15:39 JVM:32G以上的堆会发生什么
  8. hongjiang 发表 2015-01-05 17:43:46 再谈随机数引起的阻塞问题
  9. 唐尤华 发表 2015-01-07 16:00:53 推荐!国外程序员整理的Java资源大全
  10. 小子 发表 2015-01-09 15:36:00 java Integer中highestOneBit和bitCount的实现原理
  11. 博主 发表 2015-01-11 14:08:00 [转]深入分析 Java I/O 的工作机制
  12. ares 发表 2015-01-23 11:48:39 常用Maven插件介绍

发表评论