返回顶部

收藏

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. 博主 发表 2015-06-06 00:00:00 Java Attach API
  3. importnewzz 发表 2015-06-14 07:08:08 关于 Java 对象序列化您不知道的 5 件事
  4. 博主 发表 2015-06-13 14:59:00 说说依赖注入
  5. 博主 发表 2015-04-06 07:02:00 java中的 a = b = c
  6. 博主 发表 2012-09-14 01:57:00 java Play框架入门 ( simple tutorial for play framework
  7. 方 腾飞 发表 2015-06-22 09:44:13 Adopt OpenJDK 翻译计划
  8. erenzone@gmail.com 发表 2015-06-24 10:23:22 JAXB & Collection Properties
  9. 四火 发表 2015-06-26 00:16:09 从Java和JavaScript来学习Haskell和Groovy(元编程)
  10. 毛毛 发表 2015-07-04 13:48:18 JAVA性能优化调查结果(第二部分)
  11. erenzone@gmail.com 发表 2015-07-06 04:31:03 100 High-Quality Java Developers’ Blogs
  12. 泥瓦匠BYSocket 发表 2015-07-16 11:59:13 图解 Java IO : 一、File源码

发表评论