注解

头像
WinRT
    阅读 2 分钟

    使用注解

    一个简单例子:

    @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 "";  
    }

    注解接口中的元素声明实际上是方法声明。注解接口的方法可以没有参数,没有throws语句,也不能是泛型的。

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

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

      1. RetentionPolicy.SOURCE: Java源码期起作用,编译期被丢弃;
      2. RetentionPolicy.CLASS: 只在编译期起作用,单不会被加载到JVM中;
      3. RetentionPolicy.RUNTIME: 它会被加载进入到JVM中,在Java程序运行的生命周期中都起作用;
    • @Target:当一个普通注解被@Target注解标识时,这个普通注解就被限定了在那些地方起作用。比如被限定只在java的类上起作用、或者方法上起作用。

      1. ElementType.TYPE: 对注解、类、接口、枚举进行注解;
      2. ElementType.FIELD: 对属性进行注解;
      3. ElementType.METHOD: 对方法进行注解;
      4. ElementType.PARAMETER: 对形参进行注解;
      5. ElementType.CONSTRUCTOR: 对构造器进行注解;
      6. ElementType.LOCAL_VARIABLE: 对局部变量进行注解;
      7. ElementType.ANNOTATION_TYPE: 对注解进行注解;
      8. ElementType.PACKAGE: 对一个包进行注解;
      9. ElementType.TYPE_PARAMETER: 对引用类型参数注解(JDK1.8新增);
      10. ElementType.TYPE_USE: 对类型进行注解(JDK1.8新增);

    WinRT
    21 声望4 粉丝

    临渊羡鱼,不如退而结网


    « 上一篇
    泛型编程
    下一篇 »
    并发编程