serialVersionUID field warning in eclipse
我刚开始使用awt,并在其中制作了一个简单的程序,它可以正常工作,但它在Eclipse中显示了一条警告消息,我不理解:
The serializable class TestGUI does not declare a static final
serialVersionUID field of type long
我知道警告消息与awt无关,不需要发布我的整个代码,但是当我试图对代码进行SSCCE时,警告也消失了。因为我不知道为什么会产生这个警告,所以我不知道应该在我的SSCC中保留哪个部分。这就是整个代码!
我的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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以前在默认情况下禁用该警告。在EclipseIndigo(3.7)中,默认设置是启用警告。您可以在两个位置更改设置,一个用于工作区中的所有内容,另一个用于单个项目。
若要禁用工作区中所有项目的警告,请转到窗口/首选项并打开Java/编译器/"错误/警告"选项卡,并打开"潜在的编程问题",然后更改"SerialValueCales无序列化UnID"的值以忽略(或任何您认为合适的)。
若要禁用单个项目的警告,可以右击项目,选择属性,然后转到Java编译器/"错误/警告",单击"启用项目特定的设置"(如果必要),然后选择"潜在的编程问题",并更改"SerialValueCurrar类中没有序列化版本"的值(或者忽略您的想法)。是适当的)。
引用JavaDoc的重要部分:
1 2 3 | ...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... |