Предупреждение о поле serialVersionUID в затмении
Я только что начал на AWT и сделал простую программу в нем, она отлично работает, но в затмении показывает предупреждающее сообщение, которое я не понимаю:
Сериализуемый класс TestGUI не объявляет статическое окончательное поле serialVersionUID типа long
Я знаю, что предупреждающее сообщение не связано с AWT, и не было необходимости публиковать весь мой код, но когда я попытался сделать SSCCE кода, предупреждение также исчезло. Так как я не знаю, почему генерируется это предупреждение, я не знал, какую часть оставить в моем SSCCE. Отсюда и весь код!
Мой код:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestGUI extends Frame {
/**
* @param args
*/
private int x = 50;
private int y = 50;
TestGUI(String s) {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
setVisible(false);
System.exit(0);
}
});
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
x = me.getX();
y = me.getY();
repaint();
}
});
}
public void paint(Graphics g) {
g.drawString("Hello Princess", 100, 100);
g.drawString("Mouse clicked here", x, y);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestGUI tg = new TestGUI("first");
tg.setSize(500, 500);
tg.setVisible(true);
}
}
Спасибо заранее!
2 ответа
В Eclipse это предупреждение было отключено по умолчанию. В Eclipse Indigo (3.7) по умолчанию было включено предупреждение. Вы можете изменить настройку в 2 местах: одно для всего в рабочей области, другое для одного проекта.
Чтобы отключить предупреждение для всех проектов в рабочей области, перейдите в Window / Preferences и откройте вкладку Java / Compiler / "Errors/Warnings", откройте "Потенциальные проблемы программирования", затем измените значение "Serializable class без serialVersionUID" на Игнорировать (или что вы считаете уместным).
Чтобы отключить предупреждение для отдельного проекта, вы можете щелкнуть правой кнопкой мыши проект, выбрать "Свойства", затем перейти к "Компилятор Java" / "Ошибки / предупреждения", нажать "Включить специфические настройки проекта (при необходимости)", затем выбрать "Потенциальные проблемы программирования" и измените значение "Сериализуемый класс без serialVersionUID" на "Игнорировать" (или то, что вы считаете подходящим).
TestGUI
продолжается Frame
который в свою очередь реализует Serializable
, Требование Serializable
интерфейс должен иметь final long serialVersionUID
поле. См. Сериализуемый Javadoc для получения дополнительной информации.
Процитирую важную часть этого Javadoc:
...it is strongly recommended that all serializable classes explicitly declare
serialVersionUID values, since the default serialVersionUID computation is highly
sensitive to class details that may vary depending on compiler implementations...