eclipse中的serialVersionUID字段警告
我刚刚开始使用AWT,并在其中制作了一个简单的程序,它工作正常,但它在eclipse中显示了一条警告消息,我不明白:
可序列化类TestGUI不声明long类型的静态final serialVersionUID字段
我知道警告信息与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);
}
}
感谢提前!
Eclipse曾经默认禁用该警告。 在Eclipse Indigo(3.7)中,默认是启用警告。 您可以在2个地方更改设置,一个用于工作区中的所有内容,另一个用于单个项目。
要禁用工作区中所有项目的警告,请转到Window / Preferences并打开Java / Compiler /“Errors / Warnings”选项卡,然后打开“潜在编程问题”,然后将“Serializable class without serialVersionUID”的值更改为忽略(或任何你认为合适的)。
要禁用单个项目的警告,您可以右键单击该项目,选择属性,然后转到Java编译器/“错误/警告”,单击启用项目特定设置(如有必要),然后选择“潜在编程问题”并将“Serializable class without serialVersionUID”的值更改为Ignore(或您认为合适的任何内容)。
TestGUI
扩展了Frame
,后者又实现了Serializable
。 Serializable
接口的要求是有一个final long serialVersionUID
字段。 有关更多信息,请参阅Serializable 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...
链接地址: http://www.djcxy.com/p/4079.html