共计 1052 个字符,预计需要花费 3 分钟才能阅读完成。
注解 + 反射
注解
概念
注解很厉害,它能够加强咱们的 java 代码,同时利用反射技术能够裁减实现很多性能。它们被广泛应用于三大框架底层。传统咱们通过 xml 文本文件申明形式,而当初最支流的开发都是基于注解形式,代码量少,框架能够依据注解去主动生成很多代码,从而缩小代码量,程序更易读。
常见的元注解:@Target、@Retention,jdk 提供未来形容咱们自定义的注解的注解。
分类
l JDK 自带注解
l 元注解
l 自定义注解
JDK 注解
JDK 注解的注解,就 5 个:
l @Override
l @Deprecated 标记就表明这个办法曾经过期了,但我就要用,别提醒我过期
l @SuppressWarnings(“deprecation”) 疏忽正告
l @SafeVarargs jdk1.7 呈现,堆净化,不罕用
l @FunctionallInterface jdk1.8 呈现,配合函数式编程拉姆达表达式,不罕用
元注解
形容注解的注解,就 5 个:
l @Target 注解用在哪里:类上、办法上、属性上
l @Retention 注解的生命周期:源文件中、class 文件中、运行中
l @Inherited 容许子注解继承
l @Documented 生成 javadoc 时会蕴含注解,不罕用
l @Repeatable 注解为可反复类型注解,能够在同一个中央屡次应用,不罕用
元注解
@Target ElementType.class
形容注解的应用范畴:
l ElementType.ANNOTATION_TYPE 利用于正文类型
l ElementType.CONSTRUCTOR 利用于构造函数
l ElementType.FIELD 利用于字段或属性
l ElementType.LOCAL_VARIABLE 利用于局部变量
l ElementType.METHOD 利用于办法级
l ElementType.PACKAGE 利用于包申明
l ElementType.PARAMETER 利用于办法的参数
l ElementType.TYPE 利用于类的元素
@Retention RetentionPolicy.class
定义了该注解被保留的工夫长短,某些注解仅呈现在源代码中,而被编译器抛弃;
而另一些却被编译在 class 文件中;编译在 class 文件中的注解可能会被虚拟机疏忽,而另一些在 class 被装载时将被读取。
为何要分有没有呢?没有时,反射就拿不到,从而就无奈去辨认解决。
l SOURCE 在源文件中无效(即源文件保留)
l CLASS 在 class 文件中无效(即 class 保留)
l RUNTIME 在运行时无效(即运行时保留)