本文主要是介绍【Java】注解与自定义,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、注解(Annotation)
1、由来
从JDK5.0开始增加了对元数据(MetaData)的支持,即是注解。注解其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。
2、作用
- 框架=注解+反射+设计模式
- 替代XML中配置,更加简洁,使用注解开发能够提高开发效率
3、常见注解
- 生成文档相关的注解:@author、@version、@see、@since、@param、@return、@exception
- 在编译时进行格式检查(JDK内置):@Override、@Deprecated 、@SuppressWarnings
- 跟踪代码依赖性,实现替代配置文件功能:@WebServlet、@Transactional
二、如何自定义注解
1、说明
- 定义新的注解类型,使用@interface关键字
- 自定义注解自动继承了java.lang.annotation.Annotation接口
- 注解的成员变量以无参方法的形式声明,方法名和返回值定义了该成员的名字和类型,类型只能为八种基本数据类型、string类型、class类型、enum类型、Annotation类型、以及以上类型的数组
- 注解的成员变量名通常使用value表示,使用注解时,若只有一个属性时,可省略属性名不写
- 默认值,使用default关键字
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Person {
String name();
GenderEnum gender() default GenderEnum.UNKNOWN;
int age() default 18;
String[] hobbies();
}
注意:自定义注解必须配上注解信息的处理流程才有意义!使用反射
2、元注解
元注解,对现有注解进行解释说明的注解。
- @Retention:指定所修饰的注解的声明周期,枚举类RetentionPolicy中定义三种类型,SOURCE(源文件保留)、CLASS(默认,class文件保留)、RUNTIME(运行时)
- @Target:指定注解能用于修饰哪些程序元素,在枚举类ElementType中
- @Documented:该元注解修饰的注解所修饰的元素在提取Java doc文档时,会保留
- @Inherited:被修饰的注解,具有继承性
JDK8新增注解
- 可重复注解: @Repeatable,被修饰的注解可重复使用,JDK8之前使用数组实现
- 类型注解:类型的地方都可以用,ElementType.TYPE_PARAMETER、TYPE_USE
3、注解解析
这篇关于【Java】注解与自定义的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!