1. 注解的理解
- 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。
- 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
- 在 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在 JavaEE 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等。
2. 基本的 Annotation 介绍
- 使用
Annotation
时要在其前面增加@
符号,并把该Annotation
当成一个修饰符使用。用于修饰它支持的程序元素 - 三个基本的
Annotation
:
-
@Override
:限定某个方法,是重写父类方法, 该注解只能用在方法中 -
@Deprecated
:用于表示某个程序元素(类、方法等)已过时 -
@SuppressWarnings
:抑制编译器警告
3. @Override 注解–案例
-
@Override
:限定某个方法,是重写父类的方法,该注解只能用于方法上 - 如果写了
@Override
注解,编译器就会去检查该方法是否真的重写了父类的方法,如果的确实重写了,则编译通过,如果没有构成重写,则编译错误
public class Override_ {
public static void main(String[] args) {
}
}
class Father{//父类
public void fly(){
int i = 0;
System.out.println("Father fly...");
}
public void say(){}
}
class Son extends Father {//子类
//解读:
//1. @Override 注解放在fly方法上,表示子类的fly方法时重写了父类的fly
//2. 这里如果没有写 @Override 还是重写了父类fly
//3. 如果你写了@Override注解,编译器就会去检查该方法是否真的重写了父类的
// 方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误
//4. 看看 @Override的定义
// 解读: 如果发现 @interface 表示一个 注解类
/*
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
*/
//说明
public void fly() {
System.out.println("Son fly....");
}
public void say() {
}
}
- 补充说明:
@interface
的说明
此interface不是接口中的interface,是注解类,jdk1.5之后加入的
4. Override 使用说明
-
@Override
表示指定重写父类的方法(从编译层面验证),如果父类没有此方法,则会报错 - 如果不写
@Override
注解,而父类仍有public void fly(){ }
,仍然构成重写 -
@Override
只能修饰方法,不能修饰其它类、包、属性等 - 查看
@Override
注解源码为@Target(ElementType.METHOD)
,说明只能修饰方法 -
@Target
是修饰注解的注解,称为元注解