2017-07-07 4 views
0

クラスAを持ち、クラスBを継承しています。エラー:クラスはserialVersionUidという名前の複数のJSONフィールドを宣言します

GSONライブラリを使用してJSONで変換しようとすると、「classはserialVersionUidという名前の複数のJSONフィールドを宣言しています」と表示されます。

私が知っている限り、私はserialVersionUidを明示的に宣言しなければ、それはGSONによって生成されます。

私もserialVersionUidを静的に入れようとしましたが、動作しません。

名案だろう、私はクラスAでシリアル化を実装することにより、エラーを修正することができますが、私はBを拡張する多くのクラスを持っている、と私は彼らからBを除外しないと思う...

誰もが知っていますなぜこのエラーが発生するのですか?

Class A extends B { 
    private c; 
    private d; 
    private e; 
} 

Class B extends Serializable{ 
    private f; 
    private g; 
} 
+1

関連:https://stackoverflow.com/questions/16476513/class-a-declares-multiple-json-fields –

+0

@RC。この質問は似ていますが、それは私の問題ではありません。私の問題は、複数の宣言されているフィールドが私によって宣言されていないことです。それは自動的に生成されます。関連する質問は、自分で作成したフィールドに関するものです。 –

+0

クラスは 'Serializable'を拡張できません。実際のコードは何ですか? – EJP

答えて

0

私は数秒前に同じ問題がありました。 私は、transient修飾子を使ってserialVersionUUIDを追加して解決しました。スーパークラスでは次のようになります:

private transient static final long serialVersionUID = 1L; 

私はそれもあなたを助けてくれることを望みます。

+0

非常に奇妙です。 'transient'は' static'と関連して何もしません。それは本当に「過渡的」である必要がありますか? – EJP

+0

Javaのtransientキーワードは、フィールドのシリアル化を行わないことを示すために使用されます。 Java言語仕様、Java SE 7エディション、第8.3.1.3項より。一時的なフィールド: 変数は、オブジェクトの永続状態の一部ではないことを示すために一時的にマークされることがあります。 –

関連する問題