Java如何将类定义或检测为可序列化类?

时间:2014-05-03 23:09:40

标签: java swing serialization

我正在使用扩展Swing对象类(例如public myClass extends JFrame)的类以及引用Screen objects/DisplayMode/Graphics的方法/变量。

没有问题。但是,当我尝试将Grphics实例g投射到Graphics2D对象时,我已经得到了似乎是常见的 error as explained in multiple places of SE with great answers and information

我很优雅!因为我设法在不添加serialVersionID或而没有实现可序列化接口的情况下解决了这个问题。如上所述,我不需要将我的班级序列化。由于它是在不必实现/扩展可序列化接口或添加serialVersionID的情况下解决的 - 我只是很想知道在什么情况下编译器决定视为 / em>或更好被序列化......我不确定我还能解释这个。

我想知道的是,如何/在什么标准下 Java Compiler是否将类限定为可序列化并需要序列号?在我的情况下,我既不需要序列化,也没有指定序列化。

2 个答案:

答案 0 :(得分:4)

class SerializableClass implements Serializable

您只需实现界面即可。 Java从不要求串行ID;如果你没有提供它在运行时确定的那个。

您还可以扩展可序列化的类:

class AnotherSerializableClass extends SerializableClass

Java将类分类为Serializable,如果它实现Serializable本身或扩展实现Serializable的类。

由于MyClass扩展了JFrame实现Serializable,所以您的类是可序列化的。

答案 1 :(得分:1)

有两种情况。

  1. 该课程未经编译,并包含“实现Serializable&#39 ;.
  2. 该类已编译,因此可加载,并且' Serializable.class.isAssignableFrom(thisClass)'返回true,其中' thisClass'是加载课程的结果。
  3. (3)对所有基类重复。

    请注意,这是IDE执行此操作,而不是Java编译器。这不是编译错误。