Java注解学习
注解
-
也叫元数据,是一种代码级别的说明,本质上是接口
-
注解的作用
- 编写文档
- 代码分析
- 编译检查
-
JDK中预定义的注解
- @Override 标注该方法是否继承父类接口
- @Deprecated 表示已过时
- SuppressWarnings(“all”) 压制警告
-
自定义注解
-
public @interfase MyAnno{//z注解中的属性就是接口中的方法 int age(); String name(); Weekday weekDay(); MyAnno2 anno2(); String[] strs(); } public enum Weekday{ SUN, MON,...; }
-
属性返回值只能是:
- 基本数据类型
- String
- 枚举
- 注解
- 以上类型的数组
-
注意:
-
定义了属性,在使用时,必须给属性赋值,多个属性之间用逗号隔开,所以,一般注解中方法名一般取成属性名。
-
定义属性时,如果使用default关键字给指定默认值,使用时,不用赋值
-
如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义属性值
-
数组赋值使用 { },用逗号隔开,如果数组只有一个值,则{}可以省略
-
eg:
-
@MyAno(age = 12, name = "zhangsan", day = MyAno.Weekday.MON, attrs = {"hello", "world"}) public class AnnoTest { public static void main(String[] args) { Class<AnnoTest> annoTestClass = AnnoTest.class; MyAno myAno = annoTestClass.getAnnotation(MyAno.class); String name = myAno.name(); } }
-
-
-
元注解
-
描述注解的注解
-
@Target
-
描述当前注解能够作用的位置,该注解只有一个属性value,返回值是ElementType枚举类型 ElementType常用值: TYPE :作用于类上 METHOD : 作用于方法上 FIELD : 作用于成员变量
-
@Retention
-
描述注解被保留的阶段,该注解只有一个属性value,返回值是RententionPolicy枚举类型 RetentionPolicy常用值: SOURCE : 当前描述的注解不会保留到class文件中 CLASS : 当前描述的注解,会保留到class字节码文件,但是不会被JVM读取到 RUNTIME : 当前描述的注解会被保留到class字节码文件中,并被JVM读取到,自定义的值一般取这个。
-
@Documented
-
描述当前注解是否会被抽取到api文档
-
@Inherited
-
当前描述的注解是否被子类继承
-
-
以上总结来源如下:
-
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43691723/article/details/106504149