50 注解
-
java增加了对元数据(MetaData)的支持,也就是Annotation(注解)
Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。|
Annotation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的“name=value”对中。
未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,一定程度上可以说:框架=注解+反射+设计模式。
-
●示例一:生成文档相关的注解 @author标明开发该类模块的作者,多个作者之间使用,分割
@version标明该类模块的版本 @see参考转向,也就是相关主题
@since从哪个版本开始增加的 @param对方法中某参数的说明,如果没有参数就不能写 @return对方法返回值的说明,如果方法的返回值类型是void就不能写 @exception对方法可能抛出的异常进行说明,如果方法没有用throws显式抛出的异常就不能写其中 @param @return和@exception这三个标记都是只用于方法的。@param的格式要求:@param形参名形参类型形参说明 @return的格式要求:@return返回值类型返回值说明exception的格式要求:@exception异常类型异常说明param和@exception可以并列多个
●示例二:在编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,该注解只能用于方法 @Deprecated:用于表示所修饰的元素(类,方法等)己过时。通常是因为所修饰的结构危险或存在更好的选择 @SuppressWarnings:抑制编译器警告
●示例三:跟踪代码依赖性,实现替代配置文件功能
-
如何自定义注解:
-
注解声明为:@interface
-
内部定义成员:通常使用value表示
-
可以指定成员的默认值,使用default定义
-
如果自定义注解没有成员,表明是一个标识作用
如果注解有成员,在使用注解时,需要指明成员的值
自定义注解必须配上注解的信息处理流程(使用反射)才有意义
自定义注解通过都会指明两个元注解:Retention、Target
public @interface MyAnnotation {
String value() default "Hello";
}
-
jdk 提供的4种元注解
元注解:对现有的注解进行解释说明的注解
提供了4个标准的:
Retention:指定说修饰的 Annotation 的生命周期: SOURCE\CLASS(默认行 为)\RUNTIME(只有声明为RUNTIME声明生命周期的注解,才能通 过反射获取。)
Target:用于指定被修饰的 Annotation 能用于修饰哪些程序元素
******出现的频率较低**
Documented:表示所修饰的注解在被javadoc解析时,保留下来。
Inherited:被它修饰的 Annotation 将具有继承性
-
通过反射获取注解信息 。
-
jdk 8 中注解的新特性:可重复注解、类型注解
6.1 可重复注解:① 在MyAnnotation 上声明@Repeatable,成员值为MyAnnotations.class
② MyAnnotation 的 Target 和 Retention 等元注解与 MyAnnotations相同
ELementType.TYPE_PARANETER
表示该注解能写在类型变量的声明语句中(如:泛型声明)。
ELementType.TYPE_USE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)