Day7 Java 注解

Annotation注解
Annotation是JDK5.0引入的技术
作用
- 对程序进行解释
- 可以被编译器读取
格式
以“@注释名”在代码中存在,也可以添加一些参数值,
如:@SuppressWarnings(value=”unchecked”)
@Override 重写方法的注解
```java
class MyThread implements Runnable{@Override//注解 public void run() { }
}
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
## 一些内置注解
- @Override,java.lang.Override。表示一个方法声明打算重写超累中另一个方法声明。
- @Deprecated,java.lang.Deprecated。表示不鼓励程序员使用这样的元素或者有更好的方式,但是可以使用。
- @SuppressWarnings,java.lang.SuppressWarnings。用来抑制编译时的警告信息。
- 参数:
- @SuppressWarnings("all")
- 等...
## 元注解
作用:负责注解其他注解。
Java顶一个4个标准的meta-annotation,用来提供对其他annotation类型做说明。
位于`java.lang.annotation`
有以下几种:
- @Target 用于描述注解的使用范围。(被描述的注解可以用在什么地方)
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期。
- (SOURCE < CLASS < RUNTIME)
- @Document:说明该注解将被包含在Javadoc中。
- @Inherited:说明子类可以继承父类中的该注解。
示例:
```java
@MyAnnoation
//类 TYPE
public class Demo2_MetaAnnoation {
@MyAnnoation
//方法 METHOD
public void Test(){
@MyAnnoation
int a;//局部变量 LOCAL_VARIABLE
}
}
//定义一个注解
//可以用在 类,方法,局部变量中
@Target(value = {ElementType.TYPE,ElementType.METHOD,ElementType.LOCAL_VARIABLE})
//表示注解在什么地方有效
//运行时
@Retention(value = RetentionPolicy.RUNTIME)
// 出现在JavaDoc中
@Documented
//子类可以继承父类的注解
@Inherited
@interface MyAnnoation{
}
自定义注解
使用@interface自定义注解,自动继承java.lang.Annotation接口
格式:public @interface 注解名{定义内容}
定义内容中一个方法指一个配置参数。
返回值类型就是参数的类型,只能是Class,String,enum。
可以通过default来声明参数的默认值。
注解元素必须要有值。
只有一个值时,一般用value()表示。
1 | public class Demo3_CustomAnnotation { |
注解在哪里使用
可以附加在package,class,method,field上面,相当于给他们添加了额外的辅助信息。
可以通过反射机制编程实现对这些元数据的访问。
评论