1

我正在尝试制作一个简单的 java 2-d 平台游戏。Java一直给我带来一些错误“可序列化类Display没有声明long类型的静态最终serialVersionUID字段”有人可以帮忙吗?

这是我尝试运行程序时收到的错误消息:http: //i.imgur.com/H0Afv.png (在网站上)

这是代码:

import javax.swing.*;

public class Main {

    public static Display f;
    public static int width = 800;
    public static int height = 600;

    public static void main(String[] args)
    {

        f = new Display();
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setResizable(true);
        f.setSize(width, height);
        f.setLocationRelativeTo(null);
        f.setTitle("2-D Platformer");
    }


}
//This is my display class.

import java.awt.*;

import javax.swing.*;

/* this is where the error is
 *
 */           V 
public class Display extends JFrame{

    public Display p;
    public Display()
    {

        p = new Display();
        add(p);
        setLayout(new GridLayout(1, 1, 0 , 0));
    }
}
//and this is my display2 class
import java.awt.Color;

import javax.swing.*;

/* this is where the error is
 *too
 */            V 
public class Display2 extends JPanel{

    public Display2()
    {
        setBackground(Color.BLACK);
    }
}
4

2 回答 2

4

这不是错误,而是警告,它来自于您扩展了一个可序列化的类(您的类正在扩展的 GUI 组件之一),并且没有按照 Serializable 接口合同的规定为其提供最终的 serialVersionUID 字段。这并不是很重要,因为您不太可能想要序列化此类的对象(将它们存储到磁盘或传输它们),因此您可以安全地忽略此警告或使用注释@SuppressWarnings(“serial”)来告诉编译器忽略它。IE,

编辑:或者你可以给它一个默认的 serialVersionUID 作为 bhuang3 状态。1+他的回答!

编辑2:

@SuppressWarnings(“serial”)
public class Display extends JFrame {

   // .....

}

编辑 3:
接下来我们将讨论为什么创建扩展 JFrame 或其他组件的类通常不是必需的,实际上通常不是一个好主意,除非您覆盖超类的某些方法......

于 2012-11-27T01:26:15.297 回答
3

我认为你需要在你的Display2类中声明一个 serialVersionUID。例如:private static final long serialVersionUID = 1L;

于 2012-11-27T01:27:39.040 回答