java中注解的使用与实例

一、spring中的一段代码:spring

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {数组


String value() default "";ide


boolean required() default true;ui


String defaultValue() default ValueConstants.DEFAULT_NONE;spa

}继承

二、内置注解接口

Java SE5内置了三种标准注解:ci

     @Override,表示当前的方法定义将覆盖超类中的方法。get

     @Deprecated,使用了注解为它的元素编译器将发出警告,由于注解@Deprecated是不同意使用的代码,被弃用的代码。编译器

     @SuppressWarnings,关闭不当编译器警告信息。

三、用于建立的注解

Java还提供了4中注解,专门负责新注解的建立。

@Target

表示该注解能够用于什么地方,可能的ElementType参数有:

CONSTRUCTOR:构造器的声明

FIELD:域声明(包括enum实例)

LOCAL_VARIABLE:局部变量声明

METHOD:方法声明

PACKAGE:包声明

PARAMETER:参数声明

TYPE:类、接口(包括注解类型)或enum声明

@Retention

表示须要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:

SOURCE:注解将被编译器丢弃

CLASS:注解在class文件中可用,但会被VM丢弃

RUNTIME:VM将在运行期间保留注解,所以能够经过反射机制读取注解的信息。

@Document

将注解包含在Javadoc中

@Inherited

容许子类继承父类中的注解

实例说明:

第一个注解类中,除了@符号,注解很像是一个接口。定义注解的时候须要用到元注解,上面用到了@Target和@RetentionPolicy,它们的含义在上面的表格中已经给出。

在注解中通常会有一些元素以表示某些值。注解的元素看起来就像接口的方法,惟一的区别在于能够为其制定默认值。没有元素的注解称为标记注解,如:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {

}

注解的可用的类型包括如下几种:全部基本类型、String、Class、enum、Annotation、以上类型的数组形式。元素不能有不肯定的值,即要么有默认值,要么在使用注解的时候提供元素的值。并且元素不能使用null做为默认值。注解在只有一个元素且该元素的名称是value的状况下,在使用注解的时候能够省略“value=”,直接写须要的值便可。

四、定义与使用

定义

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseItem {
      public String id();
      public String desc() default "";
}

使用

 public class A{
      @UseCase(id = 101, desc= "A is a")
      //方法
  
      @UseCase(id = 202)
     //方法
}

使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器。注解处理器就是经过反射机制获取被检查方法上的注解信息,而后根据注解元素的值进行特定的处理。

m.getAnnotation();方法
相关文章
相关标签/搜索