我正在尝试制作一个简单的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);
}
}
答案 0 :(得分:4)
这不是错误,它是一个警告,它来自您扩展可序列化类(您的类正在扩展的GUI组件之一),而不是像Serializable接口协议规定的那样给它最终的serialVersionUID字段。这并不重要,因为您不太可能要序列化此类的对象(将它们存储到磁盘或传输它们),因此您可以安全地忽略此警告或使用注释@SuppressWarnings(“serial”)
,告诉编译器忽略它。即,
编辑:或者你可以给它一个默认的serialVersionUID作为bhuang3状态。他的回答是1+!
编辑2:
@SuppressWarnings(“serial”)
public class Display extends JFrame {
// .....
}
编辑3:
接下来我们将讨论为什么它通常不是必需的,实际上通常不是一个好主意来创建扩展JFrame或其他组件的类,除非你重写了超类的一些方法......
答案 1 :(得分:3)
我认为您需要在Display2
类中声明serialVersionUID。
例如:private static final long serialVersionUID = 1L;