2016-06-15 12 views
1

enumを返すabstractからメソッドを拡張する際の問題に直面しています。enumを拡張して、Javaのオーバーライドされたメソッドで使用します。

以下は、私が拡張する必要のある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を拡張

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

たい今、私の質問を拡張する方法でありますJsonFormatTypesは "SWITCH"を持つように列挙し、オーバーライドされたメソッドでそれを使用しますか?

+0

列挙型は拡張できませんが、クラスを拡張できます。列挙型をクラスに変換してみませんか? – Leo

答えて

4

enumを拡張することはできません。 docsから

すべての列挙型は、暗黙的にjava.lang.Enumを拡張します。クラスは親を1つしか拡張できないため(Declaring Classes参照)、Java言語は状態の複数継承(Multiple Inheritance of State, Implementation, and Typeを参照)をサポートしていないため、列挙型は他のものを拡張することはできません。いくつかのオンライン文献にもかかわらず

(例えばhere)、switch文は現在、JSONでサポートされていない、あるとして、それゆえJsonFormatTypesJacksonから、私が思う)結構です、あなたはおそらくそれいずれかを使用する必要はありません異なっている。

JSON形式の新しい仕様を作成しようとしている場合は、サードパーティに頼るのではなく、独自のパーサーを使用する方がよい場合があります。

関連する問題