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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Applet(未声明类型为long的静态最终serialVersionUID字段)相关的知识,希望对你有一定的参考价值。

我刚刚开始学习Java编程。我编写了第一章有关Applet的程序(applet类),它给了我这个错误。我试图找到一种解决方案,但是找不到。

根据书,该程序应该显示一个窗口,但是在扩展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){
        }
答案

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

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

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

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

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

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

另一答案

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

例如:

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

以上是关于Applet(未声明类型为long的静态最终serialVersionUID字段)的主要内容,如果未能解决你的问题,请参考以下文章

serializable 类 DrawImage 未声明类型为 long 的静态终态 是啥意思

为啥java中的serialVersionUID必须是静态的、最终的和long类型的? [复制]

小问题

何时选择变量来声明为最终静态

dev-c++ g++ - 错误:类型名/静态常量未声明(首先使用此函数)[关闭]

将静态最终短线转换为短线的原因?