我有一个带有eventOccurred的类,它在SwingUtilities.invokeLater内部工作(为了在EDT上)。这个课程将被延长。我想强制扩展这个类的任何东西也将它们的eventOcurred工作放在invokeLater中,并且看不到怎么做。将finalOccurred放在我的基类中是行不通的,因为我需要允许eventOccurred被覆盖。
答案 0 :(得分: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