注解
内置注解
-
@Override
表示一个方法声名打算重写超类中的另一个方法声明。
-
@Deprecated
表示不鼓励程序员使用这样的元素
-
@SuppressWarnings()
抑制编译时的警告信息
如@SuppressWarnings("all")等
元注解
除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:
-
@Target
Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方
-
@Retention
Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时)
Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中。
RUNTIME一般较常用
SOURCE, // 源文件保留 CLASS, // 编译期保留,默认值 RUNTIME // 运行期保留,可通过反射去获取注解信息
-
@Documented
表示是否将注解生成在JavaDoc中
-
@Inherited
子类可以继承父类的注解
我们可以使用这4个元注解来对我们自定义的注解类型进行注解
自定义注解
使用@interface
//定义一个注解
@Target(value = {ElementType.METHOD,ElementType.TYPE}) //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME) //表示注解在什么时候有效RUNTIME>class>sources
@Documented //表示是否将注解生成在JavaDoc中
@Inherited //子类可以继承父类的注解
public @interface MyAnnotation{
}
//定义一个注解
@Target(value = {ElementType.METHOD,ElementType.TYPE}) //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME) //表示注解在什么时候有效RUNTIME>class>sources
@Documented //表示是否将注解生成在JavaDoc中
@Inherited //子类可以继承父类的注解
public @interface MyAnnotation{
//注解的参数: 参数类型+参数名()
String name() default ""; //default 表示默认值 这里是默认值为空
int age() default 0;
int id() default -1; //默认值为-1,代表不存在
String [] schools();
}
@Target(value = {ElementType.METHOD,ElementType.TYPE}) //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME) //表示注解在什么时候有效RUNTIME>class>sources
public @interface MyAnnotation2{
String value(); //如果注解中只有一个参数,则建议定义为value,这样在使用的时候直接写 @MyAnnotation2("赋值")
}