Warning: [serial] serializable class SomeClass не имеет определения serialVersionUID
Хотя этот класс не предназначен для сериализации, я получаю это необычное предупреждение! Может ли кто-нибудь сообщить мне, если вы столкнулись с таким нечетным предупреждением?!
C:\Documents and Settings\...filename.java:60: warning: [serial] serializable class SomeClass has no definition of serialVersionUID
public class NewPortalConnection extends javax.swing.JFrame {
Привет
Ответы
Ответ 1
Это предупреждение появляется, когда вы получаете класс, который реализует Serializable. В вашем случае родительский класс Serializable представляет собой JFrame.
Вы можете подавить это предупреждение с помощью @SuppressWarnings ( "serial" ) или предоставить классу serialVersionUID: private static final long serialVersionUID = ...;
(с длинным значением для точек).
Существует обсуждение здесь, где SO предпочтительнее.
Ответ 2
JFrame
реализует Serializable, поэтому все расширяющиеся классы также реализуют Serializable.
Вот учебник о Serializable и serialVersionUID, но чтобы действительно понять тему, вы должны прочитать главу 11 Эффективная Java ( 2-е изд.) Джошуа Блоха
Ответ 3
Если вы знаете, что ваше приложение никогда не сериализует вещи, вот способ полностью предупредить предупреждение.
Добавьте -Xlint:-serial
в аргументы командной строки javac
. Например,
javac -Xlint -Xlint:-serial *****
Таким образом у вас появятся все предупреждения, кроме "serial".