码迷,mamicode.com
首页 > 编程语言 > 详细

Java注解

时间:2018-01-27 22:22:55      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:body   ace   cto   ret   基本   cal   retention   编译   interface   

annotation提供了四种元注解:

@Documented -- 注解是否将包含在javadoc中

@Retention --什么时候使用该注解

@Target 注解用于什么地方

@Inherited 是否允许资料基础该注解

 

RetentionPolicy.SOURCE 在编译阶段丢弃,不会写入字节码

RetentionPolicy.CLASS 在类加载时丢弃 注解默认使用这种

RetentionPolicy.RUNTIME 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息,自定义注解时常采用此种方式

@Target :

ElementType.TYPE 

ElementType.FIELD 

ElementType.METHOD

ElementType.PARAMETER

ElementType.CONSTRUCTOR

ElementType.LOCAL_VARIABLE

ElementType.ANNOTATION_TYPE

ElementType.PACKAGE

 

Annotations只支持基本类型、string及枚举类型。注解种的缩影的舒心被定义成发放,并允许提供默认值

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

@interface Todo{

  public enum Priority {LOW,HIGH}

  public enum Status {YES, NO}

  String author() default "Tim";

  Priority pririty() default Priority.LOW;

  Status status() default Status.NO;

}

@Todo(priority = Todo.Priority.MEDIUM, author = "yes", status = Todo.Status.NO)

public void incompleteMethod1(){

}

 

如果注解只有一个属性,可以直接命名value

@interface Author{

  String value();

}

 

@Author("123")

public void someMethod(){}

 

定义自己的注解并将其应用到业务逻辑上,需要些一个用户程序调用我们的注解需要使用反射机制

Class clzss = xxx.class;

for(Method method : clzss.getMethods()){

  Todo todo = (Todo)method.getAnnotation(Todo.class);

  if(todo != null){

    todo.author();

    todo.status();

  }

}

Java注解

标签:body   ace   cto   ret   基本   cal   retention   编译   interface   

原文地址:https://www.cnblogs.com/codechange/p/8367221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!