少し混乱しているので質問があります。@SuppressWarnings( "serial")
public final class ConverterTYPE {
private final static HashMap<String, Byte> STRING_MAP = new HashMap<String, Byte>() {
{
put("A", new Byte((byte)12));
put("B", new Byte((byte)13));
}
};
}
我々はすべて知っているように、静的フィールドをシリアル化するつもりはないされていますのは、私はこの1つのように定義された静的フィールドの偉大な数を含むクラスの多くが含まれているいくつかのソースコードを持っているとしましょう。
しかし、Java(およびEclipse)では、「シリアライズ可能なクラスは、long型の静的なfinalVersionUIDフィールドを宣言していません」という文句があります。静的なものがシリアル化されないことに気付かないのはなぜですか?
次の質問:すべての警告を取り除くには@SuppressWarnings("serial")
を使用するのがこの問題の正しい解決方法でしょうか?
EDIT:私のクラスの
なしSerializableインタフェース(またはそのスーパークラスのいずれも)を実装していません。そして、EclipseはHashMap<String, Byte>
を警告しています。それは静的なフィールドであることをなぜ検出しないのですか?
HashMapはSerializableインターフェイスを実装しています。 HashMapを匿名クラスに拡張するので、その匿名クラスもSerializableを実装します。 – Numeron
オフトピック:https://blog.jooqorg/2014/12/08/dont-be-clearing-the-double-curly-braces-anti-pattern/ –