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

时间:2016-06-15 13:00:20

标签: java inheritance enums jackson jackson-modules

我面临一个关于从abstract返回enum的方法的问题。

我需要扩展的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 clas,使其类型为“SWITCH”

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

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

1 个答案:

答案 0 :(得分:4)

您无法扩展enum

来自docs

  

所有枚举隐式扩展java.lang.Enum。因为一个类只能扩展一个父类(参见Declaring Classes),所以Java语言不支持多重继承状态(参见Multiple Inheritance of State, Implementation, and Type),因此枚举不能扩展其他内容。

尽管有一些在线文献(例如here),但JSON目前不支持switch语句,因此我认为JsonFormatTypes(来自Jackson)是正常的是的,你可能不想以任何不同的方式使用它。

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