-3

次のクラス定義を使用して、Java で LinkdList を拡張しようとしています。

public class Roster extends LinkedList<Teammate>{

}

しかし、そうすることで次の警告が表示されます。

The serializable class Roster does not declare a static final serialVersionUID field of type long

それはどういう意味ですか、どうすれば警告を削除できますか?

4

2 に答える 2

4

警告は、そのクラスを拡張するときに「同意する」ことをしていないことを意味します。static final serialVersionUID field of type longそのクラスは、拡張するとクラスにが含まれることを信頼します。implements Serializableこれは、この変数を必要とするインターフェイスであるためです。

警告を抑制するには、次を追加します。

@SuppressWarnings("serial")

クラスを宣言する行の上(public class Foo

警告を修正するには、変数を次のように宣言します。

private static final long serialVersionUID = 1812107715815332895L;

また、使用する時間がランダムに生成されることを確認してください。

Eclipseでは、行番号の横にある黄色の電球をクリックすることで、これらのオプションの両方をクイックフィックスとして使用できます。

于 2012-07-05T05:36:48.943 に答える
1

serialVersionUIDは、Serializableクラスのユニバーサルバージョン識別子です。逆シリアル化では、この番号を使用して、ロードされたクラスがシリアル化されたオブジェクトに正確に対応するようにします。一致するものが見つからない場合、InvalidClassExceptionがスローされます。

これを修正するには、クラスで静的な一意のIDを宣言します-

private static final long serialVersionUID = 75264722950069776147L; // 一意のID

于 2012-07-05T05:35:04.120 に答える