当前位置: 首页 > 知识库问答 >
问题:

为什么java.awt.image.BufferedImage不能序列化?

谈渊
2023-03-14

我试图在Java中序列化BufferedImage,但在运行我的程序时,我收到一个NotSerializableException

查看BufferedImage类,我注意到它没有实现Serializable

为什么BufferedImage不实现Serializable

共有1个答案

姜乐家
2023-03-14

我想你刚刚发现了一个缺失的特征。

  • BufferedImage implements Serializable有意义吗?在我看来是的。特别是如果bufferedimage不是从文件加载的,而是创建并绘制的。但是,即使它来自一个文件,如果我想通过RMI或类似的方式在VM之间交换它,谁会在乎这些东西来自哪里呢?
  • BufferedImage中是否有任何内容提供了反对BufferedImage实现Serializable的强大技术理由?我浏览了源代码,我不这么认为。

我检查了bug数据库是否已经包含了一个条目,但是我找不到任何相关的东西。因此,这是您通过bughtml" target="_blank">数据库做出贡献并提出特性请求的机会。http://bugs.java.com/bugdatabase/

作为一种解决办法,您可能需要查看javax.swing.ImageIcon类中ReadObject()WriteObject()的实现。ImageIcon可序列化的。也许您可以将BufferedImage包装在用于您的用例的ImageIcon中,或者以某种方式从ImageIcon.ReadObject()/ImageIcon.WriteObject()提供逻辑。

 类似资料:
  • 如果我有一个模型序列化程序,其中数据库模型中不需要first_name和last_name(blank=True,null=True,default=None),并且我选择提交可能包含或可能不包含“first_name”或“last_name”字段的json数据,那么无论这些字段是否通过json请求提交,这些字段不应该存在于已验证的_数据[]中,因为它们列在序列化程序字段中,并且其默认值设置为无?

  • 问题内容: 我正在使用JavaScript将对象序列化为JSON字符串, 我注意到只有可枚举的对象属性才被序列化: [ 笔 ] 我想知道为什么会这样?我已经通过搜索MDN页面中,json2解析器文档。我找不到任何地方记录此行为。 我怀疑这是使用仅通过[[enumerable]]属性的循环(至少在情况下)的结果。可以使用类似的方法同时返回可枚举和不可枚举的属性。不过,这可能会导致序列化(由于反序列化

  • 杰克逊做了一件非常奇怪的事,我找不到任何解释。我正在进行多态序列化,当一个对象独立运行时,它可以完美地工作。但是,如果将同一对象放入列表并序列化该列表,则会删除类型信息。 它丢失类型信息的事实会导致可疑的类型擦除。但是这发生在序列化列表内容的过程中;Jackson所要做的就是检查它正在序列化的当前对象以确定其类型。 以下是输出: 如您所见,当对象位于列表中时,Jackson没有添加类型信息。有人知

  • 上面的代码不会编译为错误: 错误[E0277]: trait绑定

  • 在我的代码中,我有以下行: 在野外,它生活在一个枚举中: 我从sonarqube那里得到以下提及: 使“形状”暂时或可序列化。可序列化类中的字段本身必须是可序列化的或瞬态的,即使该类从未显式序列化或反序列化。这是因为在负载下,大多数J2EE应用程序框架都会将对象刷新到磁盘,而一个据称具有非瞬态、非序列化数据成员的可序列化对象可能会导致程序崩溃,并为攻击者打开大门。 据我所知,int[](和int[

  • 问题内容: 最近,我一直在进行相当多的JSON解析,并在Node.js和浏览器中传递Javascript,并遇到了这个难题。 我使用构造函数创建的任何对象都无法通过JSON.stringify进行完全序列化,除非我单独初始化构造函数中的所有值!这意味着我的原型在设计这些类时实际上变得毫无用处。 有人可以阐明为什么以下内容没有按我期望的那样进行序列化吗? 怎么了: a_string == {“ in