我有一个触发自定义 java 事件的 java 类。代码结构如下:
public class AEvent extends EventObject {
...
}
public interface AListener extends EventListener {
public void event1(AEvent event);
}
public class A {
public synchronized void addAListener(AListener l) {
..
}
public synchronized void removeAListener(AListener l) {
..
}
protected void fireAListenerEvent1(AEvent event) {
..
}
}
一切正常,但我想创建一个新的 A 子类(称为 B),它可能会触发一个新事件。我正在考虑以下修改:
public class BEvent extends AEvent {
...
}
public interface BListener extends AListener {
public void event2(BEvent event);
}
public class B extends A {
public synchronized void addBListener(BListener l) {
..
}
public synchronized void removeBListener(BListener l) {
..
}
protected void fireBListenerEvent2(AEvent event) {
..
}
}
这是正确的方法吗?我在网上搜索示例,但找不到任何示例。
在这个解决方案中有一些我不喜欢的东西:
BListener
有两种方法,一种使用AEvent
另BEvent
一种作为参数。B
类都有addAListener
和addBListener
方法。我应该用 private 关键字隐藏 addAListener 吗?[更新:无法使用 private 关键字隐藏]fireAListenerEvent1
和fireBListenerEvent1
方法类似的问题。
我正在使用 Java 1.5 版。