Подтвердить что ты не робот

Что такое serialVersionUID в java, обычно в классе исключений?

Возможный дубликат:
Почему я должен беспокоиться о serialVersionUID?

Я просматриваю код обработки исключений, и я увидел что-то, называемое serialVersionUID. Что это за uid? Ограничен ли он только исключением или может использоваться во всех классах??? в чем преимущество этого идентификатора?

4b9b3361

Ответ 1

serialVersionUID - это поле для определения версии определенного класса при сериализации и десериализации. рассмотрите сценарий, в котором у вас есть класс Employee, который имеет 3 поля, которые были в производстве в течение некоторого времени (что может быть много сериализованные версии объектов-сотрудников), когда вы обновляете класс для включения (скажем, 4-го поля), тогда весь предыдущий класс (который сериализован) не может быть отброшен или десериализован на новый, и вы получите исключение.

чтобы избежать этой проблемы, вы можете использовать поле serialVersionUID, чтобы сообщить JVM, что новый класс является infact другой версии (путем изменения serialVersionUID).

@Farmor и @Tom Jefferys сказали почти то же самое, но с примером вещи выглядят намного проще.

Ответ 2

Он используется для сериализации, он должен быть объявлен в любом классе, который реализует Serializable.

Это фактически номер версии, которую JVM может использовать, чтобы проверить, соответствует ли сериализованный класс определению класса, которое вы пытаетесь десериализовать.

Там больше информации о нем: http://download.oracle.com/javase/1,5.0/docs/api/java/io/Serializable.html

Ответ 3

Чтобы определить, имеют ли они сериализуемую и десериализуемую совместимость, если они имеют один и тот же serialVersionUID и оба реализуют Serializable, тогда они совместимы.

И это не ограничивается исключениями, поскольку вы заметите, что Eclipse склонен положить serialVersionUID в начале вашего обычного класса java, если он реализует Serializable.

Отредактировано: Обновлено, чтобы включить @Spychos правильный комментарий о интерфейсе Serializable.