У меня вопрос, потому что я немного запутался (или, может быть, я не замечаю чего-то очевидного). Допустим, у меня есть исходный код, содержащий множество классов, которые содержат большое количество статических полей, определенных как это:
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")
, чтобы избавиться всех таких предупреждений?
РЕДАКТИРОВАТЬ:
Ни один из моих классов не реализует интерфейс Serializable (или ни один из их суперклассов). И Eclipse указывает на HashMap
со своими предупреждениями. Почему он не обнаруживает, что это статическое поле?