eclipse中的serialVersionUID字段警告

我刚开始使用AWT并在其中创建了一个简单的程序,它工作正常,但它在eclipse中显示了一条我不明白的警告信息:

可序列化类TestGUI不声明long类型的静态最终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); } } 

Thanx提前!

Eclipse曾经默认禁用该警告。 在Eclipse Indigo(3.7)中,默认设置是启用警告。 您可以在2个位置更改设置,一个用于工作区中的所有内容,一个用于单个项目。

要禁用工作区中所有项目的警告,请转到Window / Preferences并打开Java / Compiler /“Errors / Warnings”选项卡,然后打开“Potential programming problems”,然后将“Serializable class without serialVersionUID”的值更改为忽略(或者你认为合适的任何东西)。

要禁用单个项目的警告,可以右键单击项目,选择Properties,然后转到Java Compiler /“Errors / Warnings”,单击Enable project specific settings(如有必要),然后选择“Potential programming problems”并将“Serializable class without serialVersionUID”的值更改为Ignore(或您认为合适的任何内容)。

TestGUI扩展了Frame ,后者又实现了SerializableSerializable接口的要求是具有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...