欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

javassist给方法添加注解,javassist添加注解,package cn.o

来源: javaer 分享于  点击 15663 次 点评:23

javassist给方法添加注解,javassist添加注解,package cn.o


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 byrx.net 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();    }}
相关栏目:

用户点评