SimpleStringProperty set()与setValue()
SimpleStringProperty
类中set(String)
和setValue(String)
之间有什么区别?
我知道set(String)
是从StringPropertyBase
派生的,但是这让我更加奇怪,为什么另外还有setValue(String)
?
set/setValue
和get/getValue
方法对用于将Object属性与原始类型属性(如BooleanProperty
或DoubleProperty
:
BooleanProperty:
void set(boolean value) void setValue(java.lang.Boolean v)
DoubleProperty:
void set(double value) void setValue(java.lang.Number v)
在这些属性类中, ___Value
方法使用对应于类型对象,而直接方法使用基本类型。
查看代码,您可能会发现逻辑上有点不同。 例如, DoubleProperty#setValue(null)
等于DoubleProperty#set(0.0)
(绑定所需)。 所以我一般建议使用set / get方法并将setValue / getValue留给绑定需求,因为它们可能包含额外的逻辑。
对于Object / String属性,set和setValue方法之间没有区别。
StringProperty.java:
@Override public void setValue(String v) { set(v); }
StringPropertyBase.java:
@Override public void set(String newValue) { if (isBound()) { throw new java.lang.RuntimeException("A bound value cannot be set."); } if ((value == null)? newValue != null : !value.equals(newValue)) { value = newValue; markInvalid(); } }
在通常情况下,您可以从打开的javafx打开源代码并查看。