奇怪的多态性需要

时间:2013-11-04 18:34:19

标签: polymorphism subclassing invokelater

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

1 个答案:

答案 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