重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在上一篇文章中,我们实现了了自定义注解导出excel及对date类型和枚举类型进行处理。虽然效果是出来了,但是还是有问题的。
创新互联公司专注于思礼企业网站建设,响应式网站建设,电子商务商城网站建设。思礼网站建设公司,为思礼等地区提供建站服务。全流程按需求定制设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
问题分析:
1:在处理date类型及枚举类型的时候,很麻烦,需要好几个属性配合这使用。如果忘了其中的一个就会导致错。如下图:
还记的在《Java中注解学习系列教程-3》中我们知道,自定义注解的成员属性还可以是一种特殊的类型:Annotation的。也就是在注解中使用注解。
所以我们根据这个特性来处理:
将日期类型转换及枚举类转换封装到两个不同的注解中。
一:封装枚举类的注解
1.1:在我们自定义excel解析的注解ExcelAnnotation类中定义解析枚举类的注解。如下图:
/** * 声明枚举类解析对象 * @return */ public abstract EnumCode2Description[] EnumCode2Description() default {}; /** * 枚举类 code转 description */ @Retention(RetentionPolicy.RUNTIME) @Target( {}) public @interface EnumCode2Description{ /** * 调用枚举列的方法名称 * @return */ public abstract String methodName(); /** * 调用枚举类方法的参数 * @return */ public abstract Class methodArgClass() default Integer.class; /** * 枚举类 * @return */ public abstract Class clazz(); }
1.2:在实体对象中使用该注解
1.3:解析注解中处理
二:日期格式化封装
2.1:在自定义注解中定义日期格式注解
/** * 声明解析日期封装对象 * @return */ public abstract myDateFormat2Pattern[] myDateFormat2Pattern() default {}; /** * 日期格式化-封装注解 */ @Retention(RetentionPolicy.RUNTIME) @Target({}) public @interface myDateFormat2Pattern{ public abstract String pattern() ; public abstract boolean isDateFormate() ; }
2.2:定义格式对象为成员属性
2.3:使用封装后的日期注解
2.4:解析封装的日期注解
代码以放git上了。
关注凯哥公众号:凯哥Java。获取
声明:本文是《Java中注解学习系列教程》第五篇文章-小案例,使用自定义注解实现Excel导出优化初级阶段。
本文出处:http://www.kaigejava.com/article/detail/444
凯哥博客:www.kaigejava.com
凯哥公众号:凯哥Java(kaigejava)