gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:19:58 25 4
gpt4 key购买 nike

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 上提问.我的猜测是(类似于 Nick 在他的回答中发布的警告),由于多种原因,框架中的全面序列化支持被认为是一个坏主意,因此有意决定不支持它(但这只是一个猜测).

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com