系列文章目录
前言
除了注释外注解也可以帮助我们编程。
一、注解
注解(Annotation)也被称为元数据(Metadata), 用于修饰解释 包、 类、 方法、 属性、 构造器、 局部变量等数据信息。
| 注解 |
|---|
| 和注释一样, 注解不影响程序逻辑, 但注解可以被编译或运行, 相当于嵌入在代码中的补充信息 |
| 在 JavaSE 中, 注解的使用目的比较简单, 例如标记过时的功能, 忽略警告等。 在 JavaEE 中注解占据了更重要的角色, 例如用来配置应用程序的任何切面, 代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等 |
使用 Annotation 时要在其前面增加 @ 符号, 并把该 Annotation 当成一个修饰符使用。 用于修饰它支持的程序元素。
| 注解符号 | 作用 |
|---|
| @Override | 限定某个方法, 是重写父类方法, 该注解只能用于方法 |
| @Deprecated | 用于表示某个程序元素(类, 方法等)已过时 |
| @SuppressWarnings | 抑制编译器警告 |
1.1 @Override
| @override |
|---|
| 限定某个方法,是重写父类方法,只能用于方法 |
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
public class Override_ {
public static void main(String[] args)
{
}
}
class Father{
public void fly(){
System.out.println("Father fly...");
}
public void say(){}
}
class Son extends Father {
@Override
public void fly() {
System.out.println("Son fly....");
}
@Override
public void say() {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
| @Override 使用说明 |
|---|
| @Override 表示指定重写父类的方法(从编译层面验证),如果父类没有fly方法则会报错 |
| 如果不写@Override注解,而父类仍有public void fly(){},任然构成重写 |
| @Override只能修饰方法,不能修饰其他类、包、属性等 |
| 查看@Override注解源码为 @Target(ElementType.METHOD),说明只能修饰方法 |
| @Target 是修饰注解的注解,称为元注解 |
1.2 @Deprecated
| @Deprecated |
|---|
| 用于表示某个程序元素(类、方法等)已过时 |
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(){
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
| @Deprecated说明 |
|---|
| 用于表示某个程序元素(类、方法等)已过时 |
| 可以修饰方法、类、字段、包、参数等等 |
| @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) |
| @Deprecated的作用可以做到新旧版本的兼容和过渡 |
1.3 @SuppressWarnings
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings({"rawtypes", "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() {
List list = new ArrayList();
list.add("jack");
list.add("tom");
list.add("mary");
int i;
System.out.println(list.get(1));
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
| @SuppressWarnings |
|---|
| unchecked 是忽略没有检查的警告 |
| rawtypes 是忽略没有指定泛型的警告(传参时没有指定泛型的警告错误) |
| unused是忽略没有使用某个变量的警告错误 |
| @SuppressWarnings 可以修饰的程序元素为查看@Target |
| 生成@SuppressWarnings时,不用背,直接点击左侧的黄色提示,就可以选择(注意可以指定生成的位置) |
二、元注解
JDK 的元 Annotation 用于修饰其他 Annotation。元注解: 本身作用不大, 讲这个原因希望看源码时, 可以知道他是干什么。
| 元注解 | 作用 |
|---|
| Retention | 指定注解的作用范围, 三种 SOURCE,CLASS,RUNTIME |
| Target | 指定注解可以在哪些地方使用 |
| Documented | 指定该注解是否会在 javadoc 体现 |
| Inherited | 子类会继承父类注解 |
总结
注解可以帮我们更好的理解程序。