转载

注解

使用注解

一个简单例子:

@Test public void Action()  {  
  
}

每个注解名字的前面都有@符号

注解元素

注解可以拥有被称为元素的键/值。例如:

@Test(timeout=1000)

注解元素可以是以下类型:

  • 基本类型值(数值型、字符型、布尔型)
  • String
  • Class对象
  • enum(枚举实例)
  • 注解
  • 数组

注解声明

声明注解可以出现在如下情况的声明里:

  • 类(包括enum)和接口(包括注解接口)
  • 方法
  • 构造函数
  • 实例变量(包括enum常量)
  • 局部变量
  • 参数变量和catch子句
//对于变量,注解要放在类型前面:
public void Action(@SuppressWarnings("unchecked") String str)  
{  
    @SuppressWarnings("unchecked") List<String> users = new ArrayList<>();  
}
  • 类型参数

定义注解

@Target({ElementType.TYPE})  
@Retention(RetentionPolicy.RUNTIME)  
@interface MyAnnotation {  
    int id() default 0;  
    String info() default "";  
}

注解Target和注解Retention是元注解,指定注解可以出现的位置以及在哪里可以访问到。

  • @Retention:当一个普通注解被 @Retention 注解标识时,它限定了这个普通注解的生命周期。

    RetentionPolicy.SOURCE
    RetentionPolicy.CLASS
    RetentionPolicy.RUNTIME
    
  • @Target:当一个普通注解被 @Target 注解标识时,这个普通注解就被限定了在那些地方起作用。比如被限定只在java的类上起作用、或者方法上起作用。

    ElementType.TYPE
    ElementType.FIELD
    ElementType.METHOD
    ElementType.PARAMETER
    ElementType.CONSTRUCTOR
    ElementType.LOCAL_VARIABLE
    ElementType.ANNOTATION_TYPE
    ElementType.PACKAGE
    ElementType.TYPE_PARAMETER
    ElementType.TYPE_USE
    
原文  https://segmentfault.com/a/1190000021537852
正文到此结束
Loading...