【JavaAAR】Java注解和反射(1)
前言:
本文内容:什么是注解、内置注解、元注解
推荐免费Java注解和反射讲解视频:【狂神说Java】注解和反射_哔哩哔哩_bilibili
什么是注解
-
Annotation是从JDK5.0开始引入的新技术
-
Annotation的作用:
- 不是程序本身,可以对程序作出结束(这一点和注释(comment)没什么区别)
- 可以被其他程序(如:编译器等)读取
-
Annotation的格式:
- 注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)
-
Annotation在哪里使用:
- 可以附加在package,class,method,field等上面,相当于给它们添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package com.jokerdig.demo;
/**
* @author Joker大雄
* @data 2021/9/6 - 21:04
**/
//什么是注解
public class Demo01 extends Object{
//重写的注解
public String toString() {
return super.toString();
}
}
内置注解
-
@Override:定义在
java.lang.Override
中,此注解只适用于修辞手法,表似一个方法声明打算重写超类中的另一个方法声明。 -
@Deprecated:定义在
java.lang.Deprecated
中,此注释可以用于修辞方法,属性,类,表示不鼓励了程序员使用这样的元素,通常是因为它很危险或者有更好的选择。 -
@SuppressWarnings:定义在
java.lang.SuppressWarnings
中,用来抑制编译时的警告信息。 -
与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数都是已经定义好的:
- @SuppressWarnings(“all”)
- @SuppressWarnings(“unchecked”)
- @SupressWarnings(value={“unchecked”,“deprecation”})
- …
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24package com.jokerdig.demo;
/**
* @author Joker大雄
* @data 2021/9/6 - 21:15
**/
//取消警告提示
public class Demo02 extends Object{
//@Override 重写的注释
public String toString() {
return super.toString();
}
//过时的,已被淘汰的
public static void test(){
System.out.println("Deprecated");
}
public static void main(String[] args) {
test();//已过时,但也能用
}
}
元注解
-
元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-nanotation类型,它们被用来提供对其他annotation类型作说明。
-
这些类型和它们所支持的类在
java.lang.annotation
包中可以找到(@Target,@Retention,@Documented,@Inherited)- @Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期
- (SOURCE<CLASS<RUNTIME)
- @Document:说明该注释将被包含在javadoc中
- @Inherited:说明子类可以继承父类中的该注解
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
27package com.jokerdig.demo;
import java.lang.annotation.*;
/**
* @author Joker大雄
* @data 2021/9/6 - 21:28
**/
//测试元注解
public class Demo03 {
public void test(){
}
}
//定义一个注释
//@Target 目标,表示注解能用在那些地方
//Retention 表示注解在什么地方还有效
//runtime>class>source
//Documented 表示是否将我们的注解生成在Javadoc中
//InHerited 子类可以继承父类的注解
MyAnnotation{
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hey,Joker!
评论
ValineTwikoo