「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战」
1、前言
笔者在之前面试,总会被问到对Java的自定义注解有没有了解、实际开发中是怎么使用注解等问题。说实话,项目都是在前人的基础上开发的,该定义的工具类、自定义注解什么的都有现成的。于是就,特意学习总结了下,本偏就结合实际代码,为大家分享下。
2、注解
首先,注解是在Java 1.5之后的版本加入的特性。注解可以用来修饰类、构造方法、方法、成员变量、参数及本地变量,所有注解都是通过@interface关键字来实现Annotation接口的,在Annotation接口里定义有常规的equals、hashcode等方法,以及获取注解Class对象的annotationType。在开发过程中,其最大的好处就是简化了重复代码,比如在导入excel数据时,要对某几列字段进行数据类型校验,我们就可以通过自定义注解来实现,避免重复代码,提高可用性。
除了注解,还有元注解。那么什么是元注解呢?就是修饰注解的注解。这句话可能看起来比较绕口。元注解主要有:@Retention(注规定解的生命周期,就是注解在那个阶段起作用,常用的就是RetentionPolicy.RUNTIME,运行时阶段),@Target(规定注解的作用域范围,常用的如 ElementType.FIELD,作用在类的字段上)。
3、实现自定义注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExportEntityMap {
String EnName() default "数据库列名";
String CnName() default "实体映射名";
}
PS:这里需要特殊说明下,写自定义注解的类时,只能使用基本数据类型、String、枚举、Class。
//添加注解
@Data
public class Test {
@ExportEntityMap(CnName = "主键ID", EnName = "Id")
private String id;
}
//处理注解
//获取类的所有字段
Field[] declaredFields = Test.Class.getDeclaredFields();
for (Field declaredField : declaredFields) {
//获取字段上的注解对象
ExportEntityMap declaredAnnotation = declaredField.getDeclaredAnnotation(ExportEntityMap.class);
if (declaredAnnotation != null) {
fieldMap.put(declaredAnnotation.EnName(), declaredAnnotation.CnName());
}
}
总之,就是获取到注解对象,根据业务需求,来做进一步的业务处理。好了、本期就先介绍到这里,有什么需要交流的,大家可以随时私信我。😊