java - 扩展枚举并在 java 中的重写方法中使用它

标签 java inheritance enums jackson jackson-modules

我面临一个关于从返回枚举的抽象扩展方法的问题。

下面是我需要扩展的 com.fasterxml.jackson 库的抽象类。

public abstract class JsonSchema
{
    public abstract JsonFormatTypes getType();
}

JsonFormatTypes 是枚举:

public enum JsonFormatTypes
{
    STRING,
    NUMBER,
    INTEGER,
    BOOLEAN,
    OBJECT,
    ARRAY,
    NULL,
    ANY;
}

现在我想为 SwitchSchema 和 JsonFormatTypes 扩展 JsonSchema 类,使其类型为“SWITCH”

public class SwitchSchema extends JsonSchema
{
    @Override
    public JsonFormatTypes getType(){
        return JsonFormatTypes.SWITCH;
    }
}

现在我的问题是如何扩展 JsonFormatTypes 枚举以具有“SWITCH”并在重写方法中使用它?

最佳答案

您不能扩展枚举

来自docs :

All enums implicitly extend java.lang.Enum. Because a class can only extend one parent (see Declaring Classes), the Java language does not support multiple inheritance of state (see Multiple Inheritance of State, Implementation, and Type), and therefore an enum cannot extend anything else.

尽管有一些在线文献(例如 here ),JSON 目前不支持 switch 语句,因此 JsonFormatTypes (我想来自 Jackson )是就这样很好,您可能不想以任何不同的方式使用它。

如果您正在尝试为 JSON 格式制定新规范,最好使用自己的解析器而不是依赖第三方。

关于java - 扩展枚举并在 java 中的重写方法中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836208/

相关文章:

c - 运算符 '++' 的未经允许的操作数 [MISRA 2012 规则 10.1,必需]

java - 类如何在作为构造函数时构建其其他实例

C++ 继承 - super.method() Java 等价物

python - Django、Python继承: Exclude some fields from superclass

java - 为随机发生器选择合适的类名称

qt - 我们如何在没有任何JavaScript的情况下在QML中声明枚举?

java - 使用 PDFBox 2.0.2 缺少类 PDFTextStripper() 从 PDF 中提取文本

java - Selenium 出现 Java 错误 :"File path wcxChrome.crx needs to be absolute in key ..."

java - 如何将库与我的 jar 结合起来?

java - Kotlin 中的 Enum.valueOf