を拡張するクラスを作成しています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。
問題は、ソースがプライベートでgettersinがないため、意図した実装がコンパイルされないPropertyChangeSupportため、サブクラスがそれにアクセスできないことです。PropertyChangeSupportのコードを変更できません。
ソースのプライベートコピーをサブクラスのフィールドとして持つよりも、これを解決するよりエレガントな方法はありますか?
関連する質問: サブクラス内のクラスのプライベート変数にアクセスする方法は?