首页 > 代码库 > 关于注解Annotation第二篇
关于注解Annotation第二篇
举个例子来看一看注解定义类在语法树中用哪些语法节点来表示以及如何组织的。
@Retention(RetentionPolicy.RUNTIME) // 注解会在class中存在,运行时可通过反射获取 @Target(ElementType.METHOD) // 目标是方法 @Documented // 文档生成时,该注解将被包含在javadoc中,可去掉 public @interface TestAnnotation { public String name() default "helloworld"; }
查看JCClassDecl语法节点(注解类也被当作一个类来表示)的jcModifiers属性,截图如下。
jcModifiers中的flags属性值为8705,必写为这样的表示:
(1<<13)|(1<<0)|(1<<9)
查看Flags中关于各个Modifiers指定的常量,可知是public和interface且还有个专门表示annotation的静态常量,如下:
/** Flag that marks attribute interfaces 标记属性接口, added in classfile v49.0. * 应该只能修饰注解定义类 */ public static final int ANNOTATION = 1<<13;
然后看一下JCMethodDecl属性,截图如下:
使用如上的注解,如下:
public class C { @TestAnnotation(name = "小明") public Integer test(int a, String name, Object c) { return 1; } }
截图如下:
关于注解Annotation第二篇
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。