java - 为什么 javafx.scene.text.Font 不可序列化?

标签 java serialization fonts javafx-2 javafx

旧的java.awt.Font可以方便地序列化 - 然而有点烦人的是, JavaFX font class不是。更烦人的是,手动序列化很尴尬,因为构造函数中指定的 FontPostureFontWeight 对象在构造后不可用(必须求助于调用和解析 getStyle() 相反。)我正在努力思考为什么会出现这种情况,至少从表面上看,我当然看不到 JavaFX 字体上存在的任何功能,而 AWT 字体上不存在这会很尴尬序列化。

是否有任何技术原因导致我遗漏了这种情况,或者这是可能在未来版本中纠正的 API 异常?

最佳答案

JavaFX 中很少有东西是序列化的。您可以通过查看 serialized-form 找到可序列化的所有内容。 javadoc 的页面。这样,您可以看到几乎唯一可以序列化的东西是基于旧的可序列化 java.util.EventObject 的事件。以及与 Swing 集成的 JFXPanel。其他一切都不可序列化。因此,当几乎没有其他东西可序列化时,Font 是非常不典型的。

JavaFX 本身在很大程度上依赖于它的动态属性机制及其关联的绑定(bind)和更改监听器。底层属性系统本身(当前)不可序列化,因此这就是 JavaFX 中没有大量序列化的原因之一。

也就是说,Font 对象在 JavaFX 中很少见,因为它似乎是不可变的,只提供了构造函数和 getter 方法,没有使用任何属性。因此理论上它可以很容易地序列化。您可以提交 feature request提出这个建议。但它可能被视为低优先级,因为 JavaFX 本身并不真正依赖序列化。 JavaFX 实现中的序列化方法似乎是不序列化,除非需要与现有 api 或框架集成。

如果您对 JavaFX 中的序列化以及框架未充分利用序列化背后的原因有更多疑问,您可以在 openjfx-dev mailing list 上提问。 。我的猜测是(类似于尼克在他的回答中发布的警告),由于多种原因,框架中的全面序列化支持被认为是一个坏主意,因此故意决定不支持它(但这只是一个猜测)。

关于java - 为什么 javafx.scene.text.Font 不可序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678999/

相关文章:

android - 在 Photoshop 文件中,字体大小是 20px,在 android 中,sp 是什么?是一样的吗?是指 20px= 20sp 还是其他?

types - 如何在 postscript 文件中嵌入真正的字体

html - 在 HTML/CSS 中使用自定义字体

java - Hibernate session 不更新实体

java - (Java) 在 Mac OS X 上以编程方式访问 "System Roots"下的 SSL 证书

java - 如何根据多个属性过滤集合?

c# - UnitsNet 的 Json 序列化显示的数据比我类的多得多

c++ - 是否可以在 C++ 中序列化和反序列化一个类?

java - 尝试空捕获

json - Jackson 2 错误地序列化 Java java.nio.file.Path