SimpleStringProperty集()与setValue方法()(SimpleStringP

2019-09-01 04:28发布

是什么区别set(String)setValue(String)SimpleStringProperty类?

我知道set(String)来源于StringPropertyBase ,但是这让我更加纳闷,为什么有另外的setValue(String)

Answer 1:

set/setValueget/getValue方法对存在于对准像原始类型属性对象属性BooleanPropertyDoubleProperty

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有约束力的需求,因为他们可能会加入额外的逻辑。

用于对象/字符串的属性有集和的setValue方法没有差别。



Answer 2:

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的来源和看到。



文章来源: SimpleStringProperty set() vs. setValue()