作用:告诉编译器如何运行程序,简化配置文件
1.1常用注解:
//重写父类的方法
@Override
public String toString()
{
}
//印制编译器警告
@SuppressWarnings({"unused","unchecked"})
public void save()
{
List list = null;
}
//标记方法已经过时
@Deprecated
private void save1()
{
}
1.2 自定义注解:
通过自定义注解,可以给类、字段、方法上添加描述信息!
public @interface Author {
/**
* 注解属性
* 1. 修饰为默认或public
* 2. 不能有主体
* 3. 带默认值的注解 default
* 4. 注解属性名称为value,这就是默认名称,注解只有一个value属性时候才可以省略名称
*/
String name();
int age() default 30;
String value();
}
//使用注解
@Author("Jet")
@Author(value = "Jet")
1.3元注解
作用:指定注解的可用范围
1.3.1 @Target
@Target({
TYPE, 类
FIELD, 字段
METHOD, 方法
PARAMETER, 参数
CONSTRUCTOR, 构造器
LOCAL_VARIABLE 局部变量
})
使用方法
@Target({TYPE,METHOD}) //表示Author注解可以用在类和方法上
public @interface Author {
}
1.3.2 @Retention
指定注解的生命周期
@Retention(RetentionPolicy.SOURCE) 注解只在源码级别有效
@Retention(RetentionPolicy.CLASS) 注解在字节码级别有效 默认值
@Retention(RetentionPolicy.RUNTIME) 注解在运行时期有效 (常用这种)
使用方法
@Retention(RetentionPolicy.SOURCE) //表示Author注解只在源码级别有效
public @interface Author {
}
1.3.3 通过反射获取注解信息
public class App{
@Author(remark="注解信息",value="注解反射")
void test()
{
Class clazz = App.class;
//获取方法上的注解
Method m = clazz.getMethod("test");
Author author = m.getAnnotation(Author.class);
author.remark;//获取注解信息
//可以获取成员变量上的注解
Field[] fs = clazz.getDeclaredFields();
fs[0].getAnnotation(Author.class);
//可以获取类上的注解
clazz.getAnnotation(Author.class)
}
}