在上一篇文章中,我們實現(xiàn)了了自定義注解導(dǎo)出excel及對date類型和枚舉類型進行處理。雖然效果是出來了,但是還是有問題的。
創(chuàng)新互聯(lián)公司專注于思禮企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。思禮網(wǎng)站建設(shè)公司,為思禮等地區(qū)提供建站服務(wù)。全流程按需求定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
問題分析:
1:在處理date類型及枚舉類型的時候,很麻煩,需要好幾個屬性配合這使用。如果忘了其中的一個就會導(dǎo)致錯。如下圖:
還記的在《Java中注解學習系列教程-3》中我們知道,自定義注解的成員屬性還可以是一種特殊的類型:Annotation的。也就是在注解中使用注解。
所以我們根據(jù)這個特性來處理:
將日期類型轉(zhuǎn)換及枚舉類轉(zhuǎn)換封裝到兩個不同的注解中。
一:封裝枚舉類的注解
1.1:在我們自定義excel解析的注解ExcelAnnotation類中定義解析枚舉類的注解。如下圖:
/** ?*?聲明枚舉類解析對象 ?*?@return ?*/ public?abstract??EnumCode2Description[]?EnumCode2Description()?default?{}; /** ?*?枚舉類?code轉(zhuǎn)?description ?*/ @Retention(RetentionPolicy.RUNTIME) @Target(?{}) public?@interface?EnumCode2Description{ ????/** ?????*??調(diào)用枚舉列的方法名稱 ?????*?@return ?????*/ ????public?abstract?String?methodName(); ????/** ?????*?調(diào)用枚舉類方法的參數(shù) ?????*?@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上了。
關(guān)注凱哥公眾號:凱哥Java。獲取
聲明:本文是《Java中注解學習系列教程》第五篇文章-小案例,使用自定義注解實現(xiàn)Excel導(dǎo)出優(yōu)化初級階段。
本文出處:http://www.kaigejava.com/article/detail/444
凱哥博客:www.kaigejava.com
凱哥公眾號:凱哥Java(kaigejava)