一、注解功能
-
用处:类、构造方法、成员方法、方法、参数等声明中
-
特性:不影响程序的正常执行,但是会对编译器等辅助工具产生影响
-
定义:添加到Java程序代码上,用来做一些说明和解释
1.元数据
-
定义:用于描述数据的一种数据
-
可使用注解来描述元数据。
2.注解
-
又称为标注,属于程序的元数据,也是程序代码的标记。
-
获得时间:编译、加载类和运行
-
使用反射可以对程序代码进行分析
-
使用系统定义的注意,可以在编译时对程序进行检查
-
使用元注解,可以生成相应的文档
-
用在的地点:包、类、字段、方法、局部变量、方法参数的前面
-
使用方法:@注解
3.Java内置三种注解
(1)@Override
-
作用:用于修饰方法,也就是对父类中的方法进行重写
-
是否重写时必须加上:否
-
建议在重写方法的时候加上这个注解,便于编译器进行检查是否重写错误。
-
例子省略
(2)@Deprecated
-
作用:用于注解不再使用已经过时的类、方法、属性
-
使用位置:类、方法、属性前面
@Deprecated
/**
@deprecated这个类存在缺陷,使用新的NewDeprecatedTest类替代它
*/
public class DeprecatedTest{
//类体
}
(3)@SuppressWarnings
-
作用:用于一致编译器生成警告信息
-
使用位置:类、方法、方法参数、属性和局部变量
-
常用方式:当一个方法调用了一个过时的方法或者进行不安全的类型转换的时候,编译器会生成警告,该注解可以一致警告
public class SuWarningsTest{
public static void main(String[] argsl){
@SuppressWarnings(values={"deprecation"})
//引用过时的类
DeprecatedTest dtest = new DeprecatedTest();
System.out.println(dtest);
}
}
4.我们对三种注解进行举例
package com.bjpowernode.java_learning;
public class D143_1_SuperClass {
//对域var进行注解,表示var已经过时,虽然var已经过时,但是仍然可用
@Deprecated
int var = 125;
@Deprecated
public void MethodA() {
System.out.println("我是父类中中的MethodA()方法");
}
public void MethodB() {//定义一个方法用于子类重写
System.out.println("我是父类中中的MethodB()方法");
}
}
package com.bjpowernode.java_learning;
public class D143_2_SubClass extends D143_1_SuperClass{
@Override
public void MethodB() {
System.out.println("子类重写了父类的MethodB方法");
}
}
package com.bjpowernode.java_learning;
import java.util.LinkedList;
public class D143_3_Test {
public static void main(String[] args) {
D143_1_SuperClass superObj = new D143_1_SuperClass();
superObj.MethodA();
System.out.println(superObj.var);
D143_2_SubClass subObj = new D143_2_SubClass();
subObj.MethodB();
//下面的注释用于抑制其下面的语句的编译警告信息
//如果去掉注解,则编译时会出现警告信息
@SuppressWarings("rawtypes")
LinkedList list = new LinkedList();
//下面两条语句没有加@SuppressWarnings,编译时会出现警告信息
list.add(123);
list.add("Beijing");
for(int i=0;i<2;i++) {
System.out.println(list.get(i));
}
}
}