Java中注解学习系列教程-6 excel导出优化plush版
在上一篇文章中,我们实现了了自定义注解导出excel及对date类型和枚举类型进行处理。虽然效果是出来了,但是还是有问题的。问题分析:1:在处理date类型及枚举类型的时候,很麻烦,需要好几个属性配合这使用。如果忘了其中的一个就会导致错。如下图:还记的在《Java中注解学习系列教程-3》中我们知道,自定义注解的成员属性还可以是一种特殊的类型:Annotation的。也就是在注解中使用注解。所以我们
自定义注解的成员支持注解类型,可以嵌套注解。把散落的多个配置封装为内嵌注解:EnumCode2Description封装枚举类clazz、方法名methodName和参数类型methodArgClass;myDateFormat2Pattern封装pattern格式和isDateFormate开关。ExcelAnnotation只需声明这两个注解成员,字段上一次配置即可完成,避免多成员配合时漏写出错。
- 注解成员类型包含注解,因此支持注解中嵌套注解
- EnumCode2Description内嵌注解封装枚举转换的三要素
- myDateFormat2Pattern封装pattern与是否格式化标志
- 外层注解以内嵌注解为成员,字段上一次配置完成
- 封装后避免多个属性配合使用时漏写导致的错误
在上一篇文章中,我们实现了了自定义注解导出excel及对date类型和枚举类型进行处理。虽然效果是出来了,但是还是有问题的。
问题分析:
1:在处理date类型及枚举类型的时候,很麻烦,需要好几个属性配合这使用。如果忘了其中的一个就会导致错。如下图:

还记的在《Java中注解学习系列教程-3》中我们知道,自定义注解的成员属性还可以是一种特殊的类型:Annotation的。也就是在注解中使用注解。
所以我们根据这个特性来处理:
将日期类型转换及枚举类转换封装到两个不同的注解中。
一:封装枚举类的注解
1.1:在我们自定义excel解析的注解ExcelAnnotation类中定义解析枚举类的注解。如下图:
/**
* 声明枚举类解析对象
* @return
*/
public abstract EnumCode2Description[] EnumCode2Description() default {};
/**
* 枚举类 co原创不易,完成人机校验,阅读全文
常见问题
Java注解里可以再放注解吗?
可以。注解成员支持注解类型,可把一组相关配置定义成内嵌注解,再作为外层注解的成员使用,实现配置的模块化封装。
为什么要用嵌套注解封装Excel导出配置?
日期格式化和枚举转换各需多个成员配合,漏写即错,封装成EnumCode2Description和myDateFormat2Pattern后一次配置即可,不易遗漏。