Java编译器警告: The serializable class [*****] does not declare a static finalserialVersionUID field of type long.
为什么?如何解决?
这在这里很好解释:
serialVersionUID是Serializable类的通用版本标识符。
反序列化使用此数字来确保已加载的类与序列化的对象完全对应。如果找不到匹配项,则抛出InvalidClassException。
您通过添加来修复错误
private static final long serialVersionUID = 7526472295622776147L; // unique id
上课。
进一步阅读:
旁注: 如果您使用的是Eclipse,并且(如果没有其他人)打算序列化您的类,则还可以通过以下方法来抑制该错误:
窗口→首选项→Java→编译器→错误/警告
并在“无serialVersionUID的可序列化类”上选择“忽略”。
问题内容: 关于我们教授给出的指导课程,我有一个简单的问题。我已经看过几次serialVersionUID,但是我没有什么用。 什么是利用程序中的? 问题答案: 该是一个通用版本标识符类。反序列化使用此数字来确保已加载的类与序列化的对象完全对应。如果未找到匹配项,则抛出。
问题内容: 通过使ArrayList(或其他Collection)成为最终形式,我们可以获得哪些优点/缺点?我仍然可以将新元素添加到ArrayList中,删除元素并进行更新。但是,什么才是最终的效果呢? 问题答案: 但是,什么才是最终的效果呢? 这意味着您无法将变量重新绑定为指向其他 集合实例 : 出于风格考虑,我声明了大多数我不打算更改为的引用。 我仍然可以将新元素添加到ArrayList中,删
问题内容: 我正在看一些从Java字节码获得的反汇编代码。我看到一些声明如下: 我无法弄清楚什么或平均值。有人可以帮我理解这部分吗? 问题答案: 合成场,(2) 甲 编译器创建的 字段,该字段的本地内部类链接到一个块的局部变量或引用类型参数。 另请参见 或Java中的综合类。
问题内容: 作为Java的初学者,我仍然不确定它的含义。有人精通Java 问题答案: 静态表示标记为此类的变量或方法在类级别可用。换句话说,你无需创建类的实例即可访问它。 因此,与其创建一个Foo实例,然后doStuff像这样调用: 你只需直接针对该类调用该方法,如下所示:
问题内容: 我已经多次遇到这个问题,而且我从不费心去了解它为什么会发生,并了解“静态”的实际含义。我只是应用了Eclipse建议的更改并继续进行。 蚀告诉我要做,但我不确定为什么。那么“静态”到底是什么,它是如何使用的,使用“静态”的目的是什么,为什么它给了我这个问题? 问题答案: 这是您的示例: 该方法是与该类关联的静态方法。它没有与的实例相关联,因此它无法访问与的实例相关联的变量。解决方案 不
问题内容: 我理解这段代码: ..静态方法“隐藏”了声明的静态方法,而不是在多态性意义上覆盖它。 …将输出: 在Foo 中 重新定义为in 将禁用隐藏它的功能,并且重新运行将输出: 在Foo 中 ( 编辑 :将方法标记为时,编译失败,并且仅在我删除后再次运行) 如果将静态方法声明为,是否会阻止子类有意或无意地重新定义该方法,这是否被视为不好的做法? (这很好地说明了使用行为是..) 问题答案: 我