を拡張するクラスを作成していますPropertyChangeSupport
。私が現在やりたいことはオーバーライドfirePropertyChange()
です:
PropertyChangeSupport に実装されている firePropertyChange:
public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
if (oldValue == null || newValue == null || !oldValue.equals(newValue)) {
firePropertyChange(new PropertyChangeEvent(this.source, propertyName, oldValue, newValue));
}
}
私の意図したオーバーライドfirePropertyChange
:
public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
if (oldValue == null || newValue == null || !oldValue.equals(newValue)) {
firePropertyChange(new JoystickPropertyChangeEvent(this.source, propertyName, oldValue, newValue)); //compile error: source is not visible
}
}
JoystickPropertyChangeEvent
私が作成し、拡張するクラスですProperyChangeEvent
。
問題は、ソースがプライベートでgetters
inがないため、意図した実装がコンパイルされないPropertyChangeSupport
ため、サブクラスがそれにアクセスできないことです。PropertyChangeSupport
のコードを変更できません。
ソースのプライベートコピーをサブクラスのフィールドとして持つよりも、これを解決するよりエレガントな方法はありますか?
関連する質問: サブクラス内のクラスのプライベート変数にアクセスする方法は?