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

ドキュメントから:

すべての列挙型は暗黙的に extends java.lang.Enum. クラスは 1 つの親しか拡張できないため ( Declaring Classesを参照)、Java 言語は状態の多重継承をサポートしていません (状態、実装、および型の多重継承を参照)。

いくつかのオンライン文献 (たとえばhere ) にもかかわらず、このswitchステートメントは現在 JSON でサポートされていないため、JsonFormatTypes( Jacksonから、私は推測します) そのままで問題なく、おそらく別の方法で使用したくないでしょう。

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

于 2016-06-15T13:03:01.340 に答える