0

我是一个新的java程序员。我正在尝试在 Eclipse 中执行此程序,但错误是

The serializable class LoveJava does not declare a static final serialVersionUID field of type long.

private static final long serialVersionUID = 1L; 

为什么我必须声明这条线?

import acm.graphics.*;
import acm.program.*;

public class LoveJava extends GraphicsProgram {

    private static final long serialVersionUID = 1L;

    public void run(){
        add(new GLabel("I love Java"),100,75);
    }
}
4

2 回答 2

2

欢迎来到java社区。

在这里询问之前阅读特定的 API ,这里是 API 的基本部分。

序列化运行时将版本号与每个可序列化类相关联,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送者和接收者是否已为该对象加载了与序列化兼容的类。如果接收者为对象加载了一个类,该对象的 serialVersionUID 与相应发送者的类不同,则反序列化将导致 InvalidClassException。可序列化的类可以通过声明一个名为“serialVersionUID”的字段来显式声明自己的serialVersionUID,该字段必须是静态的、最终的和long类型:

于 2013-06-10T12:52:14.930 回答
0

阅读博文“Eclipse:忽略“Not Declare Static Final SerialVersionUID”警告”,以便将 Eclipse 配置为忽略此编译器警告。

或者@SuppressWarnings(“serial”)在您的类声明之前添加,以避免首先引发编译器警告。像这样:

import acm.graphics.*;
import acm.program.*;

@SuppressWarnings(“serial”)
public class LoveJava extends GraphicsProgram {

    private static final long serialVersionUID = 1L;

    public void run(){
        add(new GLabel("I love Java"),100,75);
    }
}
于 2013-06-10T12:49:59.370 回答