Applet(不声明long类型的静态最终serialVersionUID字段)

时间:2013-08-27 03:20:39

标签: java swing applet compiler-warnings serialversionuid

我刚开始学习Java编程。我在Applets(小程序类)的第一章中给出了这个程序,它给了我这个错误。我试图找到一个解决方案,但不能。

根据这本书,这个程序应该显示一个窗口,但是当我扩展Applet类时出现这个错误:

“此行的多个标记      - 可序列化的类AppletSkel没有声明静态的最终serialVersionUID字段      类型长      - 必须在自己的文件“

中定义公共类型AppletSkel

继承我的代码;

//An Applet Skeleton

import java.awt.*;
import java.applet.*;

/*<applet code="Appletskel" width=300 height=100>
</applet>*/

//错误

 public class AppletSkel extends Applet { 
        public void init(){
    }

        public void start() {

        }

        public void stop(){

        }

        public void destroy() {

        }

        public void paint(Graphics g){
        }

2 个答案:

答案 0 :(得分:3)

第一条消息不是错误,而是警告。因为Applet实现了Serializable接口,所以它应该有一个名为serialVersionUID的唯一长标识符来遵循接口的契约。编译器警告您,您的班级不遵守此规则,但请注意,这只是一个警告。您的代码仍将编译(如果没有其他问题)并仍然运行(如果没有其他问题)。

告诉编译器只是“闭嘴”并忽略问题的一种方法是在类声明之前使用注释:@SuppressWarnings("serial")

@SuppressWarnings("serial")
public class MyFoo {
   //...
}

第二个编译器消息是一个真正的编译错误:

  

公共类型AppletSkel必须在其自己的文件中定义

您需要确保您的文件名与类名匹配。它应该是AppletSkel.java。必须修复此问题才能运行代码。

答案 1 :(得分:0)

在您的@WebServlet之前使用此代码可解决此问题。 @SuppressWarnings("serial")

例如:

@SuppressWarnings("serial")
@WebServlet("/Servlet")