| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
HazelB29
10年前发布

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();      }  }