shi*_*zou 1 java javafx properties
应该如何公开财产?
例如:
class A{
private ObjectProperty<X> objx;
}
class B{
private ObjectProperty<X> objy;
}
Run Code Online (Sandbox Code Playgroud)
我们希望绑定objy到objx或添加一个侦听objx从B。仅仅做个吸气剂就可以了objx吗?还是有一种方法可以使包装函数绑定并公开此函数?
该标准模式是
class A {
private final ObjectProperty<X> objx = new SimpleObjectProperty<>();
public ObjectProperty<X> objxProperty() {
return objx ;
}
public final X getObjx() {
return objxProperty().get();
}
public final void setObjx(X objx) {
objxProperty().set(objx);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是,你必须为属性本身(“属性访问器”:存取方法objxProperty()),它可用于绑定和注册监听器,但物业也表现为一个普通的Java Bean,以及:即有标准get和set方法。通常的约定是,您应该始终拥有x.getObjx() == x.objxProperty().get(),这是通过使Java Bean访问器方法(getObjx()和setObjx)成为最终方法来强制执行的。
如果您希望能够在内部修改该属性,但只想公开一个只读属性(其他代码可以绑定到该属性),请使用ReadOnlyObjectWrapper:
class A {
private final ReadOnlyObjectWrapper<X> objx = new ReadOnlyObjectWrapper<>();
public ReadOnlyObjectProperty<X> objxProperty() {
return objx.getReadOnlyProperty();
}
public final X getObjx() {
return objxProperty().get();
}
}
Run Code Online (Sandbox Code Playgroud)
也可以看一下该powerpoint演示文稿,该演示文稿虽然很旧,但显示了许多有用的习惯用法,例如属性的延迟和超延迟初始化。
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |