1.注解
![]()
2.自定义注解
![]()
自定义注解的格式
如图,show1 2 3均为注解的属性,与方法非常相似,但不是方法!
![]()
注解的赋值并不是通过=赋值,而是使用default关键字赋值
![]()
自定义注解的格式
![]()
自定义注解可以选择很多属性类型,而且还能定义常量
![]()
3.自定义注解的常用位置
![]()
自定义注解可以用在类、方法、变量的上方
![]()
注意:![]()
之前的自定义注解都赋了默认值,所以可以直接使用
如果没有默认值,那么就需要在使用注解时加上默认值
![]()
没有给默认值的注解就会报错
![]()
4.特殊属性--value
![]()
我们再创建一个注解,并且只有一个属性名为value的属性
![]()
在类中使用该注解时,赋值的时候就不再需要写属性名和=,直接赋值即可
![]()
5.注解的作用
![]()
先编写一个注解,只作为标识,不需要内容
![]()
然后在类的方法上加上注解
![]()
接着,获取类的字节码对象,再通过字节码对象获取所有的方法,遍历每一个方法,再使用isAnnotationPresent判断方法上是否带有注解(得是字节码),最后获取类的构造方法,创建对象,并执行方法
![]()
但是这样写并不能成功执行,因为注解最多存活在字节码阶段,而反射是在运行阶段
6.元注解
![]()
[1]@Target
用于指定注解能放在哪里使用
![]()
以重写为例子,Override只能在方法中使用
![]()
[2]@Retention
指定注解能存活在什么阶段
![]()
所以,要解决上面的问题,我们只需要指定注解存活在运行阶段即可
![]()
此时右键运行,加了注解的方法则顺利执行,而剩下的方法则未执行
![]()
所以,注解大多数都是结合反射使用才有意义
posted @
2025-06-01 19:40
直実
阅读(
10)
评论()
收藏
举报