注解
1. 什么是注解?
-
Annotation是从JDK5.0开始引入
-
作用:可以对程序做出解释,可以被其他程序(如编译器读取)。
-
注解的格式:
@+注释名
如:镇压警告注解 @SuppressWarnings(value=“unchecked”)
-
注解的使用位置
可以在packet、class、method、field等上面,通过反射机制实现访问。
2. 内置注解
-
@Override: 只能用于修饰方法,表示该方法重写了父类中的方法。
-
@Deprecated: 可以用于修饰类、方法和属性,表示不鼓励使用,通常存在更好的选择或者存在潜在的危险。
-
@SuppressWarnings: 用来抑制编译时的警告信息。
内置注解均在java.lang包下定义。
3. 元注解
元注解是负责注解其他的注解。java定义了四种元注解(Meta-annotation):
-
@Target:用于描述注解的使用范围(可以在哪些地方使用)
-
@Retention:用于描述注解的生命周期
SOURCE<CLASS<RUNTIME
自定义注解一般使用RUNTIME
-
@Documented:说明该注解将会出现在javadoc中
-
@Inherited:说明子类可以继承父类中的该注解
4.自定义注解
注解的格式为:@interface + 注解名 + {}
下面通过内部类的方式自定义注解:
package com.bistu.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class Test2 {
@MyAnnotation2(name="qlf",age=18)
public void test(){
}
}
@Target(value= {ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
//参数的格式:参数类型 + 参数名()
//加上默认值之后,在使用该注解时,可以不用赋值
String name() default "秦鲁法";
//如果不加默认值,在使用注解时,要进行显示赋值
int age();
String[] schools() default {"清华大学","北京大学"};
}