是否可以保存Java类<&燃气轮机;文件

是否可以保存Java类<&燃气轮机;文件,java,class,serialization,Java,Class,Serialization,我环顾了一下四周,但似乎没有什么能完全涵盖我想做的事情。是否可以在运行时保存类实例对象?如果是这样的话,我该怎么做呢?您是否已经了解了使用java进行序列化的概念。会帮你解决你的问题 简而言之,Java.lang.Serializable是你做这件事的朋友。我从中了解到。它很好地教授了这个概念。我建议从这里开始。这是一组关于Java序列化的注释,而不是答案。只是一些其他答案中还没有的信息 序列化不仅保存对象,还直接或间接保存它引用的所有对象。这可能真的很酷,但您可能会编写一个小objectett

我环顾了一下四周,但似乎没有什么能完全涵盖我想做的事情。是否可以在运行时保存
实例对象?如果是这样的话,我该怎么做呢?

您是否已经了解了使用java进行序列化的概念。会帮你解决你的问题


简而言之,Java.lang.Serializable是你做这件事的朋友。

我从中了解到。它很好地教授了这个概念。我建议从这里开始。

这是一组关于Java序列化的注释,而不是答案。只是一些其他答案中还没有的信息

序列化不仅保存对象,还直接或间接保存它引用的所有对象。这可能真的很酷,但您可能会编写一个小objectette,然后发现您意外地创建了一个10MB的文件

如果您正在编写的对象中存在对不可序列化对象的引用(无论多么间接),则写入操作将引发异常

如果您使用的是套接字,请定期重置ObjectOutput流。否则,除第一次写入对象外,每次都会发送对原始数据的引用。发送具有连续值1、2、3、4和5的相同对象,读取的对象将具有值1、1、1、1和1。此外,如果不重置,内存使用率将急剧上升,因为ObjectOutput和ObjectInput都会将几乎所有发送的内容保留在内存中。(尽管它只保留每个不同对象的一个副本。)

如果类在写入和读取之间发生更改,序列化将不起作用。然而,巧妙的外部化工作可以解决这个问题。(如果IDE会让您忘记,请记住serialVersionUID。)

外部化允许您编写序列化类的代码。这可能非常有用。您可以输入版本号并进行检查,还可以省略不需要的数据或在读取过程中重新创建的数据。不过,这比自动序列化需要更多的工作

在执行外部化读取时,请注意,所有引用都可能引用数据尚未到达的对象;例如,您不能一致地从子对象列表中求和金额。在readObject之后调用一个方法来设置需要计算的值可能是值得的。(发送冗余信息通常比重新计算好。)


这一切我都是经过艰苦的学习才学会的。

请注意,序列化和外部化不会保存实例对象。它们旨在保存足够的信息,以便能够在同一个JVM或另一个JVM中的字段中构建具有相同值的新对象。值得注意的是,这不包括字节码。如果您也需要这些,请查看RMI。