《Java编程思想》笔记 第二十章 注解
1.注解
- 注解也称元数据,是在代码中添加信息的一种方式添加的信息提供给编译器或者工具类框架使用。
- SE5引入,可以提供用来完整描述程序所需要的信息,往往这些信息是无法用Java来表达的。
- 注解可以在编译期的到检查。
- Java内置了三种标准注解
- @Override 确保重载方法的方法签名正确性
- @Deprecated 废弃此元素,如果使用会发出警告
- @SuppressWarnings 关闭不当的编译警告信息
2.定义注解
- 定义注解和定义接口相似,注解和其他类一样会被编译成class文件。
- 定义一个Test注解,注解和类,接口一样,一个.java 文件中只能有一个public 注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {} - 元注解:用来声明自定义注解用于什么地方
- 注解中一般都有元素来表示某些值,没有元素就叫 标记注解 如 @Test 而且使用时可以不用加()
3 .元注解
- 用来解释自定义注解的注解,表示自定义注解应该用到什么地方,作用,生命周期等。
- 有四个元注解 @Target @Retention @ Documented @Inherited
- @Target 表示注解该用在什么地方
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包 - @Retention 注解的保存策略,在哪个阶段保存注解信息
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到 - @ Documented 将此注解包含在javadoc文件中
- @Inherited 允许子类继承父类注解。
4.注解元素
- 注解元素可用类型有 : 基本数据类型,String , Class ,enum,Annotation 和 以上类型的数组
- 注解元素不能是任何包装器类 和普通类。
- 定义注解元素和定义方法类似都有个()
- 每个元素不能有不确定的值,要么在使用时赋值,要么提供一个默认值。
- 注解只有一个元素此元素名称一定是value,使用的时候可以不写出名称直接赋值如@Test(" Hi ")
- 如果有多个元素赋值就得使用“名称 = 值” 赋值,value赋值也要写出value,没在()中出现的就取默认值。
public @interface Test {
public String value() default "lpk";
public String des() default "";
public int id() default -1;
public Class c() ;
}
class People{
@Test(value = "ooaa",c = People.class) //id取默认值
public void fun(){
}
}因为元素必须有值,可以 取一些特殊值表示一个元素的缺失状态如 id = -1 ,des = 取空字符串 ""
5.使用注解
- 在使用注解的元素前面加上注解即可
- 一个注解不能继承另一个注解
6.注解处理器
- 注解处理器一般利用反射来获取注解信息,生成代码提供给工具类和框架使用。
- AnnotatedElement 接口 表示当前在此VM中运行的程序的注解元素。 该允许反射读取注解。
- Class,Field,Method 都实现了该接口。
《Java编程思想》笔记 第二十章 注解的更多相关文章
- Java编程思想笔记(第二章)
第二章 一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(referenc ...
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- java编程思想笔记(1)
java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自 ...
- #Java编程思想笔记(一)——static
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...
- 2.1(java编程思想笔记)位移操作
java位移操作主要有两种: 有符号位移:有符号位移会保留原有数字正负性,即正数依然是正数,负数依然是负数. 有符号位左移时,低位补0. 有符号右移时:当数字为正数,高位补0.当数字为负时高位补1. ...
- 【Java编程思想笔记】注解--元注解
参考文章:(小白的小小白的白 )https://blog.csdn.net/weixin_42315600/article/details/80630669 https://www.cnblogs.c ...
- 【Java编程思想笔记】注解1-简单了解注解
文章参考:https://www.cnblogs.com/xuningchuanblogs/p/7763225.html https://www.cnblogs.com/xdp-gacl/p/3622 ...
- 【Java编程思想笔记】注解--自定义注解
文章参考自:https://www.cnblogs.com/xdp-gacl/p/3622275.html 学习网站:how2java.cn 一.自定义注解的创建过程 第一步:(元注解) 使用元注 ...
- 7.JAVA编程思想笔记隐藏实施过程
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040237 "进行面向对象的设计时,一项主要的考虑是:怎样将发生变 ...
随机推荐
- URAL 1736 Chinese Hockey(网络最大流)
Description Sergey and Denis closely followed the Chinese Football Championship, which has just come ...
- PTA实验报告(循环 数组 函数)
一.循环PTA实验作业 题目一.7-2 求平方根序列前N项和 1.本题PTA提交列表 2.设计思路 本题调用了sqrt数学函数计算平方根,其次只用了一层循环,计算平方根之后使用循环累加计算总和sum. ...
- 当网卡收到的包的目的地址是主机上另一个网卡的地址.arp总结
2019/01/13 今天测试发现结果不符合预期呀,发现设置了arp_filter之后,仍然是能ping通主机上的另外一张网卡.但是现在的问题是 -------------------- 内核中是如何 ...
- 【bzoj4002】[JLOI2015]有意义的字符串 数论+矩阵乘法
题目描述 B 君有两个好朋友,他们叫宁宁和冉冉.有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求 输入 一行三个整数 b;d;n 输出 一行一个数表示模 7528443412579576937 ...
- 一道前端面试题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify();
偶然在群里看到了这道题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify(); 这道题主要是对JavaScript对象原型的考察.
- Luogu3953 NOIP2017逛公园(最短路+拓扑排序+动态规划)
跑一遍dij根据最短路DAG进行拓扑排序,按拓扑序dp即可.wa了三发感觉非常凉. #include<iostream> #include<cstdio> #include&l ...
- [CF1076E]Vasya and a Tree
题目大意:给定一棵以$1$为根的树,$m$次操作,第$i$次为对以$v_i$为根的深度小于等于$d_i$的子树的所有节点权值加$x_i$.最后输出每个节点的值 题解:可以把操作离线,每次开始遍历到一个 ...
- CF763C Timofey and Remoduling
题目戳这里. 这道题目纯粹是考思维. 若\(2N \le M\),由于答案肯定是\(s,s+d,\dots,s+(N-1)d\),我们任意枚举两个数\(a,b\),不妨设\(b\)在数列中出现在\(a ...
- 论文笔记《Spatial Memory for Context Reasoning in Object Detection》
好久不写论文笔记了,不是没看,而是很少看到好的或者说值得记的了,今天被xinlei这篇paper炸了出来,这篇被据老大说xinlei自称idea of the year,所以看的时候还是很认真的,然后 ...
- POJ3189:Steady Cow Assignment(二分+二分图多重匹配)
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7482 Accepted: ...