✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】
使用 Annotation 时要在其前面增加 @ 符号, 并把该 Annotation 当成一个修饰符使用。用于修饰它支持的程序元素
【三个基本的 Annotation】
【举个栗子】
package com.dingjiaxiong.annotation_;
/**
* ClassName: Override_
* date: 2022/9/4 14:01
*
* @author DingJiaxiong
*/
public class Override_ {
}
class Father{ //父类
public void fly(){
System.out.println("Father fly...");
}
public void say(){}
}
class Son extends Father{ //子类
//如果没有写,其实还是重写了父类的fly
//如果写了,编译器会去检查方法是否真的重写了父类的,重写了,编译通过,没有构成重写,编译错误
@Override
public void fly(){
System.out.println("Son fly...");
}
@Override
public void say(){
}
}
【@Override使用说明】
@Deprecated: 用于表示某个程序元素(类, 方法等)已过时
【举个栗子】
package com.dingjiaxiong.annotation_;
/**
* ClassName: Deprecated_
* date: 2022/9/4 14:06
*
* @author DingJiaxiong
*/
public class Deprecated_ {
public static void main(String[] args) {
A a = new A();
a.hi();
System.out.println(a.n1);
}
}
@Deprecated
class A{
@Deprecated
public int n1 = 10;
@Deprecated
public void hi(){
System.out.println("过时的hi");
}
}
编辑器提示
运行结果
【@Deprecated的说明】
@SuppressWarnings: 抑制编译器警告
【举个栗子】
package com.dingjiaxiong.annotation_;
import java.util.ArrayList;
import java.util.List;
/**
* ClassName: SuppressWarnings_
* date: 2022/9/4 14:10
*
* @author DingJiaxiong
*/
@SuppressWarnings({"rawtypes", "unchecked", "unused"})
rawtypes,抑制与使用 raw 类型相关的警告
//unchecked,抑制与未检查的作业相关的警告
//unused,抑制与未用的程式码及停用的程式码相关的警告
public class SuppressWarnings_ {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Jack");
list.add("Tom");
list.add("Mary");
int i;
System.out.println(list.get(1));
}
public void f1() {
@SuppressWarnings({"rawtypes"})
List list = new ArrayList();
list.add("Jack");
list.add("Tom");
list.add("Mary");
@SuppressWarnings({"unused"})
int i;
System.out.println(list.get(1));
}
}
运行结果
【@SuppressWarnings 注解】
说明各种值
- unchecked是忽略没有检查的警告
- rawtypes是忽略没有指定泛型的警告(传参时没有指定泛型的警告错误)
- unused是忽略没有使用某个变量的警告错误
- @SuppressWarnings可以修饰的程序元素为,查看@Target
- 生成@SupperssWarnings 时,不用背,直接点击左侧的黄色提示,就可以选择(注意可以指定生成的位置)
JDK 的元 Annotation 用于修饰其他 Annotation
元注解: 本身作用不大,讲这个原因韩老师希望同学们,看源码时,可以知道它是干什么
【说明】
只能用于修饰一个 Annotation 定义, 用于指定该 Annotation 可以保留多长时间, @Rentention 包含一个 RetentionPolicy类型的成员变量, 使用 @Rentention 时必须为该 value 成员变量指定值:
@Rentention 的三种值
【基本说明】
用于修饰Annotation定义,用于指定被修饰的 Annotation能用于修饰哪些程序元素.
@Target 也包含一个名为value的成员变量。
【基本说明】
@Documented:用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,即在生成文档时,可以看到该注解。
说明:定义为Documented的注解必须设置Retention值为RUNTIME.
被它修饰的Annotation将具有继承性.
如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解