作者:喜生-Da | 2023-09-08 09:36
Property
JavaFX添加的接口有一个类型参数T
,它是属性包装的值的类型.
其中的实现Property
接口,还有一些用于数字:IntegerProperty
,FloatProperty
,等所有这些类实现Property
.
我们IntegerProperty
举个例子.它实施的原因是什么,Property
而不是Property
我所期望的?
这是一个UML图,阐明了以下层次结构IntegerProperty
:
1> Modus Tollen..:
正如Java错误报告的注释部分所述(DoubleProperty具有意外的泛型类型),
这个设计是有意的.它使所需方法的数量显着减少.
在这个答案的评论中,James_D让我意识到后来的错误报告解决了这个问题,ChangeListener无法添加到SimpleIntegerProperty中.评论
由于向后兼容性问题,我们决定不更改基本类型属性的泛型(从Number到特定类型).但是,这意味着无法修复此问题.
表明团队考虑改变设计,但为时已晚.
我不得不同意Randahl Isaksen的评论:"不过,对我而言,这似乎是对泛型的不当使用.习惯于泛型的Java开发人员会期望使用泛型的FruitCrate是Crate
而不是Crate