Java Annotation 自定义注解(一)――定义

    在企业应用中,Java注解是非常重要的一块内容,对项目有着重大意义,目前的主流框架都推荐使用注解。在java 8 中,将会有更加强大的注解功能。

    Java自定义注解比较重要的包是java.lang.annotation,这个包不大,看一遍不需要花很多的时间,本文做一个简单介绍。

    大多数的注解可以写成如下形式

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface AnnotationDemo {
  String DEFAULT_NAME = "Methed";
  
  String name() default DEFAULT_NAME;
}

    首先需要了解下面几点:

  1. @interface修饰符是一个关键字,用于定义注解类型。

  2. 使用@interface修饰的类都实现了Annotation接口。

  3. 注解类类似于接口,可以看成是一个接口,支持public stiatic final的属性,如没有加上,默认当做该类型。

  4. 注解中可以声明公共抽象方法,默认用public abstract修饰,并通过 default 值 的形式设置默认值,方法的返回值可为基本类型、String、枚举类、Class<T>以及这些类型的数组

  5. 元注解:表示注解的注解,注解支持递归,可以加在自己身上。


    下面介绍几种元注解:

@Documented

    表示在使用注释的javadoc文档中说明该注释,这个一般都会加上。

@Retention

    表示注释的生命周期,值为一个枚举RetentionPolicy,有三个取值:

        SOURCE:保留到源文件,编译时丢弃,作用就是给开发人员看或者编译时读取;

        CLASS:保留到编译后的.class文件,JVM运行前、类加载时可以读取;

        RUNTIME:保留到运行时,JVM运行中可以通过反射获取该注解;

@Target

    表示作用的目标,是一个枚举ElementTyped的数组,表示可以加在什么元素前面

        TYPE:在加载类、接口(包括注释)、枚举(类,不是基本类型)前声明

        FIELD:在文件前声明

        METHOD:在方法前声明

        PARAMETER:在参数前声明

        CONSTRUCTOR:在构造方法前声明

        LOCAL_VARIABLE:在局部变量前声明

        ANNOTATION_TYPE:在注解前声明

        PACKAGE:包声明

@Inherited

    表示可以被该注解可以被子类继承,注意:必须要声明在类前面才有效,对于方法和接口都是无效的。

你可能感兴趣的:(java,注解,自定义)