Java注解
注解即注释,也叫元数据。一种代码级别的说明。
它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
元注解
元注解即注解的注解,是放在被定义的一个注解类的前面 ,是对注解一种限制。
这里说说以下两个元注解:
1、 @Retention
Retention的作用是定义被它所注解的注解保留多久,一般有三种策略,定义在 RetentionPolicy 枚举中。
public enum RetentionPolicy {
SOURCE, //被编译器忽略
CLASS, //注解将会被保留在class文件中,但运行时并不会被JVM保留。默认为CLASS
RUNTIME //保留至运行时
}
2、@Target
用来说明被它所注解的注解可以被声明在哪些元素之前。
public enum ElementType {
TYPE, //说明该注解只能被声明在一个类前
FIELD, //说明该注解只能被声明在一个类的字段前
METHOD, //说明该注解只能被声明在一个类的方法前
PARAMETER, //说明该注解只能被声明在一个方法参数前
CONSTRUCTOR, //说明该注解只能声明在一个类的构造方法前
LOCAL_VARIABLE, //说明该注解只能声明在一个局部变量前
ANNOTATION_TYPE, //说明该注解只能声明在一个注解类型前
PACKAGE //说明该注解只能声明在一个包名前
}
使用方法如下:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Controller{
public String value() default "";
}
以上这个注解就是SpringMVC中的 @Controller 注解声明,当然了要想如何去使用这个注解就需要配置注解处理机制了,有兴趣的可以去了解一下:http://www.cnblogs.com/xdp-gacl/p/4101727.html
常见注解
1、@Override
当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
2、 @Deprecated
用来表示某个类的属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰。
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
3、 @SuppressWarnings
用来压制程序中出来的警告。
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}