ReadOnlyStringWrapper.ReadOnlyPropertyImpl从哪里获取来自ChangeListener的oldValue()
书史足自悦,安用勤与劬。这篇文章主要讲述ReadOnlyStringWrapper.ReadOnlyPropertyImpl从哪里获取来自ChangeListener的oldValue?相关的知识,希望能为你提供帮助。
我正在研究javaFX11的ReadOnlyStringWrapper.ReadOnlyPropertyImpl
类:
private class ReadOnlyPropertyImpl extends ReadOnlyStringPropertyBase {@Override
public String get() {
return ReadOnlyStringWrapper.this.get();
}@Override
public Object getBean() {
return ReadOnlyStringWrapper.this.getBean();
}@Override
public String getName() {
return ReadOnlyStringWrapper.this.getName();
}
};
ReadOnlyPropertyImpl
的实例返回给客户端,可以在read only
模式下使用它。我无法理解的是ReadOnlyPropertyImpl
将把oldValue
带到ChangeListener
。正如我们所看到的,它只覆盖当前值的get
方法,它取自包装器。谁能解释一下?答案当前值存储在用于事件处理的帮助程序类中,请参阅
com.sun.javafx.binding.ExpressionHelper
。例如。如果你看一下SingleChange
静态内部类中的具体实现:private T currentValue;
...@Override
protected void fireValueChangedEvent() {
final T oldValue = https://www.songbingjia.com/android/currentValue;
currentValue = observable.getValue();
...
listener.changed(observable, oldValue, currentValue);
...
}
【ReadOnlyStringWrapper.ReadOnlyPropertyImpl从哪里获取来自ChangeListener的oldValue()】
Generic
,处理变更事件的另一个类有类似的实现。添加侦听器会导致创建
ExpressionHelper
实例(或修改现有实例),并且此对象负责调用事件处理程序。 (ExpressionHandler
存储在属性对象的字段中,在本例中为ReadOnlyStringPropertyBase
的helper
字段。)推荐阅读
- 如何使用VPN以编程方式更改Android设备的DNS()
- 如何让用户在Android中随意绘制长画布()
- 如何将dp转换为像素,并使用它在android中绘制到画布
- Android在画布上操纵图像 - 使用触摸,移动,放大/缩小,缩放
- Android(libstreaming)RTSP服务器可以播放视频但没有声音
- 如何使用robolectric对Android音频录制应用进行单元测试
- 如何在Android中开发音频流应用程序()
- AudioFormat在android.media.AudioFormat中不公开
- Ionic 2 Native Audio Android上没有声音