java Eclipse中的serialVersionUID字段警告

enxuqcxy  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(129)

我刚刚开始对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);
    }

}

提前感谢!

vmdwslir

vmdwslir1#

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

首选项-〉Java-〉编译器-〉错误/警告选项卡-〉潜在的编程问题部分-〉没有serialVersionUID的可序列化类-〉忽略

要禁用单个项目的警告:
右键单击项目-〉属性-〉Java编译器-〉错误/警告-〉单击启用项目特定设置(如有必要)-〉潜在编程问题部分-〉不带serialVersionUID的可序列化类-〉忽略

83qze16e

83qze16e2#

TestGUI扩展了FrameFrame又实现了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...

相关问题