Java « Что значит serialVersionUID в java?

Eclipse мне постоянно подсвечивает варнинг что мол serialVersionUID не объявлен, а зачем он вообще нужен?

1 ответов


Скорее всего вы имплементите интерфейс Serializable:

...
public class ... implements Serializable
...Именно, поэтому serialVersionUID и нужен. Дело в том, что сериализация и десериализация времени выполнения происходит с учет версии объекта. Если его не указать, то он будет генерироваться автоматически на основе класса объекта, но в зависимости от конкретной версии компилятора это может происходить по-разному, что приведет к InvalidClassExceptions.

Сам serialVersionUID необходим для динамической проверки возможности десериализации. Если у источника и приемника различные serialVersionUID, то среда выполнения в праве считать, что это разные классы, и поэтому и выбросит InvalidClassExceptions.

Подробнее тут: http://download.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html

Надеюсь помог...