注解(annotation):java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法。
annotation 英 [ænə'teɪʃ(ə)n] 美 [ˌænəˈteʃən]
Java中的常见注解
JDK自带注解
@Override 重写(=覆盖)
@Deprecated 弃用
@SuppressWarnings 忽略警告
【示例】
Person.java
public interface Person {
public String name();
public int age();
@Deprecated
public void sing();
}
Child.java
public class Child implements Person{
@Override
public String name() {
return null;
}
@Override
public int age() {
return 0;
}
@Override
public void sing() {
Person p=new Child();
}
}
Test.java
public class Test {
@SuppressWarnings("deprecaion")
public void sing(){
Person p=new Child();
p.sing();
}
}
注解的分类
按照运行机制分
- 源码注解:注解只在源码中存在,编译成.class文件就不存在了
- 编译时注解:注解在源码和.class文件中都存在
- 运行时注解:再运行阶段还起作用,甚至会影响运行逻辑的注解
按照来源分
- 来自JDK的注解
- 来自第三方的注解(大部分)
- 我们自定义的注解
此外,元注解是注解的注解
解析注解
通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
自定义注解
定义
@Target({})
@Retention()
@Inherited
@Documented
public @interface 注解名 {
成员
}
使用
@<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,...)