java - 为什么 IntegerProperty 实现 Property<Number> 而不是 Property<Integer>?

标签 java generics javafx

Property JavaFX 添加的接口(interface)有一个类型参数 T ,这是属性包装的值的类型。

Property 的实现中接口(interface),有一些是数字:IntegerProperty , FloatProperty等。所有这些类都实现了 Property<Number> .

我们以IntegerProperty为例例如。它执行Property<Number>的原因是什么?而不是 Property<Integer>正如我所料?


这是一个阐明 IntegerProperty 层次结构的 UML 图:

enter image description here

最佳答案

如 Java 错误报告 (DoubleProperty has unexpected generics type) 的评论部分所述,

This design is intended. It keeps the number of required methods significantly smaller.


在此答案的评论中,James_D让我知道后来的错误报告解决了这个问题,ChangeListener cannot be added to SimpleIntegerProperty ).评论

We decided not to change the generics of primitive types properties (from Number to specific type) due to backward-compatibility issues. However, it means this issue cannot be fixed.

建议团队考虑更改设计,但为时已晚。

关于java - 为什么 IntegerProperty 实现 Property<Number> 而不是 Property<Integer>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675004/

相关文章:

java - 如何从通用双向链表中删除

java - 处理我的代码中未发生的异常,我应该怎么办?

JavaFX8 : Single Controller for 1+1popup scene

java - 我在 Java 中遇到三个错误,但我不知道如何修复它们

java - 泛型类型的访问方法

java - Joda 时间 - 解析字符串抛出 java.lang.IllegalArgumentException

layout - 在自定义控件中使用 TextFlow 时,TitledPane 未垂直调整大小

java - 无法使用 Java API 创建 JIRA 问题

Java 1.6 : Creating an array of List<T>

c# - 如何从接口(interface)返回派生程度更高的类型?