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

JAVA 注解

时间:2015-08-10 23:47:50      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

         注解是一种配置,信息和程序的分离。

         xml等配置文件,修改之后不需要重新编译 java 文件。但是,注解本身就在 java 类文件中,被 jvm 读取,并存放到内存中。因此,修改之后需要重新编译。

一、元注解

    a@Retention :描述注解的声明周期。

         RetentionPolicy{ SOURCE  ,  CLASS  ,  RUNTIME }

         SOURCE ,源文件保留。表示这个 Annotation 类型的信息只会保留在程序源码里,源码如果经过了编译之后,Annotation 的数据就会消失,并不会保留在编译好的.class文件里面。  

         CLASS class 保留。表示这个 Annotation 类型的信息会保留在程序源码里,同时也会保留在编译好的 .class 文件里,在执行的时候,并不会把这些信息加载到 jvm 中去。未设定 Retention 的值时,默认为 CLASS

         RUNTIME ,运行时保留。 表示在源码,编译好的 .class 文件中保留信息,在执行的时候会把这些信息加载到 jvm 中。 

    b@Target :描述注解的使用范围。

         ElementType { TYPE  ,  FIELD  ,  METHOD  ,  PARAMETER  ,  CONSTRUCTOR , PACKAGE  ,  LOCAL_VARIABLE}

         TYPE : 用于描述类或者接口

         FIELD : 用于描述类的属性

         METHOD : 用于描述类的方法

         PARAMETER : 用于描述方法的参数

         CONSTRUCTOR : 用于描述构造器

         LOCAL_VARIABLE : 用于描述局部变量

         PACKAGE : 用于描述包

    c@Documented :标记注解。

        在自定义注解的时候,让这个Annotation类型的信息能够显示在java api说明文档上。

    d@Inherited :标记注解。

        在自定义注解中,可以将Annotation中的数据继承给子类。

二、自定义注解

        使用@interface自定义注解时,自动继承java.lang.annotation.Annotation接口。方法的名称就是参数的名称,返回值类型就是参数的类型。

        注解参数支持的数据类型:

         1.8种基本数据类型

         2.String类型

         3.Class类型

         4.enum类型

         5.Annotation类型

技术分享
package annotation;

import java.lang.annotation.*;

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Demo {

    String value() default "name";
}
自定义注解
技术分享
package annotation;

@Demo("This is a test !")
public class User {

}
注解赋值,User类
技术分享
package annotation;

public class UserExt extends User {

}
UserExt类,继承User类
技术分享
package annotation;

public class Test {

    public static void main(String[] args) {

        Class<?> clazz = UserExt.class;

        if (!clazz.isAnnotationPresent(Demo.class)) {

            System.out.println("没有使用注解!");
            return;
        }

        Demo demo = clazz.getAnnotation(Demo.class);
        System.out.println(demo.value());
    }
}
测试类

 

JAVA 注解

标签:

原文地址:http://www.cnblogs.com/wscy/p/4719527.html

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