博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_16_注解_自定义注解_元注解...
阅读量:4327 次
发布时间:2019-06-06

本文共 1089 字,大约阅读时间需要 3 分钟。

例如查看@Overide的注解
@Target作用是位置,,作用在类上面,还是作用在方法上面
@Retention是它能被保留到什么时候。三个阶段。源码、class、runtime
定义注解类
改成@interface
在创建类的时候可以选择为Annotation类型。

Target

taget里面就一个属性,叫做value

它的类型是ElementType[]这个类型的
它其实就是一个枚举类型
所以我们就可以这么去使用
我们作用在MyAnno3这个类上
作用在方法上可以吗?在方法上加上就会报错,。
成员变量上也不能加
value值是一个数组,加上作用域Method方法上。
再加一个作用字段上。这样既可以作用方法、类、成员变量上这三种都可以。

Retention

源码中对应的类型

RetentionPlicy也是一个枚举类型。分别对应的是源码阶段、class阶段、runtime阶段
一般都是加Runtime这个级别的注解
如果设置Class级别。也会保留到字节码中。但是不会被JVM识别
如果设置为Source。连字节码文件中都不会存在

Documented

将来这个注解描述的这些信息会被抽获取到javadoc的文档中。

桌面上新建文件夹2 然后把Worker.java这个类复制过来。
删除相关代码后。
MyAnno3也复制过来
内容全剪切掉
修改文件的格式
然后把内容再粘贴回来。并保存这个文件。
worker这个类同上,先剪切,再修改格式为 ANSI格式编码。然后再粘贴回来。
右键打开命令行
在这个文件夹内生成api文档
生成后查看,注解被保留了
show方法上面的注解也被保留了
name上的注解没有被保留
所说义这个@Documented 可以被抽获取到javadoc文档中的
如果下面这里把 @Documented 这个注解删掉。
删掉后,重新生成API文档
那么在Worker类里面加的这个几个注解会不会在API中体现?
删掉后,就不会体现了。、虽然加了注解的描述的。但是因为去掉了@Documented这段代码。所以不会在文档中体现

@Inherited

表示这个注解是否会被继承

表示这个注解会自动被此类继承
新建一个Teacher类
Teacher继承Worker这个类。在Teacher类没有加注解。
但是worker这个类有注解。那么Teacher会继承类上面的 @MyAnno3的这个注解。

总结

比较常用的注解就是前两个
 

转载于:https://www.cnblogs.com/wangjunwei/p/11289586.html

你可能感兴趣的文章
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
【Linux网络编程】使用GDB调试程序
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
RotateCard(自定义旋转view)
查看>>