Java注解

Posted kankankankankan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java注解相关的知识,希望对你有一定的参考价值。

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注解的主要内容,如果未能解决你的问题,请参考以下文章

java注解的参数没有被赋值

java注解

Android APT注解处理器 ( 配置注解依赖支持的注解类型Java 版本支持 )

Java注解教程及自定义注解

java注解是怎么实现的?

Java 注解自定义注解 ( 使用注解实现简单测试框架 )