JAVA注解

元注解:
@Target
@Retention
@Documented
@Inherited

(1)@Target  指定Annotation用于修饰那些程序元素 ,其包含一个名为“value"的成员变量,该成员变量的类型为ElementType[], ElementType为枚举类型,有以下值:
ElementType.TYPE: 能修饰类、接口或枚举类型
ElementType.FIELD: 能修饰成员变量
ElementType.METHOD:用于方法
ElementType.PARAMETER: 用于方法参数
ElementType.CONSTRUCTOR: 用于构造参数
ElementType.LOCAL_VARIABLE: 能修饰局部变量
ElementType.ANNOTATION_TYPE: 用于注解
ElementType.PACKAGE: 用于饰包
(2)Retention 说明这个注解的存活时间
RetentionPolicy.SOURCE 注解只保留到源码阶段,编译时被丢弃忽视
RetentionPolicy.CLASS 注解只保留到编译进行的时候,不会被加载到JVM中
RetentionPolicy.RUNTIME 注解保留到程序运行时,会被加载到JVM中,在程序运行时可获取到
(3)@Documented 能够将注解中的元素包含到javadoc中去
(4)@Inherited 如果一个超类被@Inherited注解过的注解进行注解的话,同时他的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface Test{}

@Test
public class A{}

public class B extends A{}

注解Test被@Inherited修饰,类A被Test注解,类B继承A,类B也拥有Test这个注解
 

@Repeatable可重复的, java1.8加进来的
@interface Persons{
     Person[] value();
}
@Repeatable(Persons.class)
@interface Person{
          String role default "";
}

@Person(role="artist")
@Person(role = "coder")
@Person(role = "teacher")
public class SuperMan{}

@Repeatable 注解了Person, @Repeatable后面括号中的类相当于一个容器注解

Element 的子类(AbstractProcessor中有用)
*ExecutableElement  表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注释类型元素
  对应@Target(Element.METHOD) @Target(ElementTye.CONSTRUCTOR)
*PackageElement  对应一个包程序元素,提供对有关包及其成员的信息访问
  对应@Target(Element.PACKAGE)
*TypeElement  表示一个类或接口程序元素,提供对有关类型及其成员的信息访问
  对应@Target(ElementType.TYPE)
*TypeParameterElement  表示一般类、接口、方法或构造方法的类型参数
  对应@Target(ElementType.PARAMETER)
*VarialbeElement  表示一个字段、enum常量、方法或构造方法的参数、局部变量或异常参数
  对应@Target(ElementType.LOCAL_VARIABLE)
  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值