我有一个带有 eventOccurred 的类,它在 SwingUtilities.invokeLater 中工作(以便在 EDT 上)。这个类将被扩展。我想强制任何扩展这个类的东西也将他们的 eventOcurred 工作放在 invokeLater 中,并且看不到如何去做。在我的基类中将 final 放在 eventOccurred 上是行不通的,因为我需要允许 eventOccurred 被覆盖。
问问题
30 次
1 回答
1
你能在基类中实现像“doStuff()”这样的方法吗?然后,您的 eventOccurred 方法使用 invokeLater 调用此方法。然后重写 doStuff(),并调用 eventOccurred 强制它在 EDT 上完成。
像这样:
class BaseClass {
public void doStuff() {
System.out.println("Base class do stuff");
}
public void EventOccurred() {
//Put this on the EDT
doStuff();
}
};
class SubClass extends BaseClass {
@Override
public void doStuff() {
System.out.println("Subclass do stuff");
}
}
然后运行:
BaseClass base = new BaseClass();
SubClass test = new SubClass();
base.EventOccurred();
test.EventOccurred();
产量:
Base class do stuff
Subclass do stuff
于 2013-11-04T18:45:15.580 回答