繁体   English   中英

是否可以保存Java Class <?>文件?

[英]Is it possible to save a Java Class<?> file?

我环顾四周,但似乎没有什么能覆盖我想做的事情。 是否可以在运行时保存Class<?>实例对象? 如果是这样我怎么去做呢?

你是否经历过使用java 的序列化概念 此链接将帮助您解决问题。

简而言之, Java.lang.Serializable是你的朋友。

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

序列化不仅可以保存对象,还可以直接或间接地保存它引用的所有对象。 这可能非常酷,但你可能会写一个小目标并发现你意外地创建了一个10MB的文件。

如果对您正在编写的对象中的非可序列化对象有一个引用(无论是间接的),则写入将抛出异常。

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

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

外部化允许您编写代码以序列化类。 这非常有用。 您可以输入版本号并检查它们,并且可以省略不需要的数据,或者可以在读取期间重新创建数据。 但是,它需要比自动序列化更多的工作。

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

我很难学到这一切。

我从这个网站上学到了序列化 它很好地教导了这个概念。 我建议从那里开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM