diff --git a/README.md b/README.md index 4ccb1b9..6e03650 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ System.out.println(result); // Output: Return string ```java public final class LoginException extends RuntimeException - implements IMultiTypesException { + implements IMultiTypesException { private static final long serialVersionUID = 881293090625085616L; private final Type type; private LoginException(@Nonnull Type type, @Nonnull String message) { @@ -104,7 +104,7 @@ public final class LoginException // ... - public enum Type implements IExceptionType { + public enum Type implements IExceptionType { DEFAULT("00", "当前会话未登录"), NOT_TOKEN("10", "未提供token"), INVALID_TOKEN("20", "token无效"), diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java index c91c1bf..7ac279c 100644 --- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java +++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java @@ -15,8 +15,11 @@ */ package xyz.zhouxy.plusone.commons.exception; +import java.io.Serializable; + import javax.annotation.Nonnull; +import xyz.zhouxy.plusone.commons.annotation.Virtual; import xyz.zhouxy.plusone.commons.base.IWithCode; /** @@ -35,7 +38,7 @@ import xyz.zhouxy.plusone.commons.base.IWithCode; *
  * public final class LoginException
  *         extends RuntimeException
- *         implements IMultiTypesException<LoginException, LoginException.Type> {
+ *         implements IMultiTypesException<LoginException, LoginException.Type, String> {
  *     private static final long serialVersionUID = 881293090625085616L;
  *     private final Type type;
  *     private LoginException(@Nonnull Type type, @Nonnull String message) {
@@ -62,7 +65,7 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
  *
  *     // ...
  *
- *     public enum Type implements IExceptionType<LoginException> {
+ *     public enum Type implements IExceptionType<LoginException, String> {
  *         DEFAULT("00", "当前会话未登录"),
  *         NOT_TOKEN("10", "未提供token"),
  *         INVALID_TOKEN("20", "token无效"),
@@ -126,7 +129,8 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
  */
 public interface IMultiTypesException<
         X extends Exception,
-        T extends IMultiTypesException.IExceptionType> {
+        T extends IMultiTypesException.IExceptionType,
+        TCode extends Serializable> {
 
     /**
      * 异常类型
@@ -141,20 +145,25 @@ public interface IMultiTypesException<
      *
      * @return 异常类型编码
      */
-    default @Nonnull String getTypeCode() {
+    default @Nonnull TCode getTypeCode() {
         return getType().getCode();
     }
 
     /**
      * 异常类型
      */
-    public static interface IExceptionType
-            extends IWithCode, IExceptionFactory {
+    public static interface IExceptionType
+            extends IWithCode, IExceptionFactory {
 
         /**
          * 默认异常信息
          */
         String getDefaultMessage();
 
+        @Virtual
+        default String getDescription() {
+            return getDefaultMessage();
+        }
+
     }
 }
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
index e6e695d..0f86910 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
@@ -39,7 +39,7 @@ import xyz.zhouxy.plusone.commons.exception.IMultiTypesException.IExceptionType;
  */
 public final class ParsingFailureException
         extends Exception
-        implements IMultiTypesException {
+        implements IMultiTypesException {
     private static final long serialVersionUID = 795996090625132616L;
 
     private final Type type;
@@ -171,7 +171,7 @@ public final class ParsingFailureException
     /** XML 解析失败 */
     public static final Type XML_PARSING_FAILURE = Type.XML_PARSING_FAILURE;
 
-    public enum Type implements IExceptionType {
+    public enum Type implements IExceptionType {
         DEFAULT("00", "解析失败"),
         NUMBER_PARSING_FAILURE("10", "数字转换失败"),
         DATE_TIME_PARSING_FAILURE("20", "时间解析失败"),
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
index 917c9d1..b739c82 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
@@ -35,7 +35,7 @@ import xyz.zhouxy.plusone.commons.exception.IMultiTypesException;
  */
 public final class InvalidInputException
         extends RequestParamsException
-        implements IMultiTypesException {
+        implements IMultiTypesException {
     private static final long serialVersionUID = -28994090625082516L;
 
     private final Type type;
@@ -109,7 +109,7 @@ public final class InvalidInputException
         return this.type;
     }
 
-    public enum Type implements IExceptionType {
+    public enum Type implements IExceptionType {
         DEFAULT("00", "用户输入内容非法"),
         CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS("01", "包含非法恶意跳转链接"),
         CONTAINS_ILLEGAL_WORDS("02", "包含违禁敏感词"),
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
index 1bc1a3c..0ba9d8a 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
@@ -31,7 +31,7 @@
  * 
  * public final class LoginException
  *         extends RuntimeException
- *         implements IMultiTypesException<LoginException, LoginException.Type> {
+ *         implements IMultiTypesException<LoginException, LoginException.Type, String> {
  *     private static final long serialVersionUID = 881293090625085616L;
  *     private final Type type;
  *     private LoginException(@Nonnull Type type, @Nonnull String message) {
@@ -58,7 +58,7 @@
  *
  *     // ...
  *
- *     public enum Type implements IExceptionType<LoginException> {
+ *     public enum Type implements IExceptionType<LoginException, String> {
  *         DEFAULT("00", "当前会话未登录"),
  *         NOT_TOKEN("10", "未提供token"),
  *         INVALID_TOKEN("20", "token无效"),