您好,登錄后才能下訂單哦!
在上一篇文章中,我們實現了了自定義注解導出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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。