У меня вопрос, потому что я немного смущен (или, может быть, я не замечаю ничего очевидного). Скажем, что у меня есть исходный код, который содержит много классов, которые содержат большое количество статических полей, определенных следующим образом:
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));
}
};
}
Как мы все знаем, статические поля не будут сериализованы.
Однако Java (и Eclipse) жалуется, что "Сериализуемый класс не объявляет статическое окончательное поле serialVersionUID типа long". Почему они не могут заметить, что статичность не будет сериализована?
И следующий вопрос: было ли правильным решением этой проблемы использовать @SuppressWarnings("serial")
, чтобы избавиться от всех таких предупреждений?
EDIT:
Ни один из моих классов не реализует интерфейс Serializable (или ни один из их суперклассов). И Eclipse указывает на HashMap<String, Byte>
с его предупреждениями. Почему он не обнаруживает, что это статическое поле?