1

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

下面是我需要扩展的 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”并在覆盖方法中使用它?

4

1 回答 1

4

您不能扩展enum.

文档

所有枚举都隐式扩展java.lang.Enum。因为一个类只能扩展一个父类(参见声明类),Java 语言不支持状态的多重继承(参见状态、实现和类型的多重继承),因此枚举不能扩展其他任何东西。

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

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

于 2016-06-15T13:03:01.340 回答