ste*_*wpf 20 java javabeans javafx-2
之间有什么区别set(String),并setValue(String)在SimpleStringProperty上课吗?
我知道这set(String)是源于StringPropertyBase,但这让我更加惊讶,为什么还有setValue(String)呢?
Ser*_*nev 32
set/setValue和get/getValue方法对存在将Object属性与基本类型属性对齐,如:BooleanProperty或DoubleProperty:
BooleanProperty:
void set(boolean value)
void setValue(java.lang.Boolean v)
Run Code Online (Sandbox Code Playgroud)
DoubleProperty:
void set(double value)
void setValue(java.lang.Number v)
Run Code Online (Sandbox Code Playgroud)
在这些属性类中,___Value方法使用对应于类型对象,而直接方法使用基本类型.
查看代码,您可能会发现逻辑上有点不同.例如,DoubleProperty#setValue(null)等于DoubleProperty#set(0.0)(绑定所需).所以我建议使用set/get方法并将setValue/getValue留给绑定需求,因为它们可能包含额外的逻辑.
对于Object/String属性,set和setValue方法之间没有区别.
Ale*_*rov 10
StringProperty.java:
@Override
public void setValue(String v) {
set(v);
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,您可以从打开的javafx打开源代码并查看.
| 归档时间: |
|
| 查看次数: |
14497 次 |
| 最近记录: |