0

我有一个带有 eventOccurred 的类,它在 SwingUtilities.invokeLater 中工作(以便在 EDT 上)。这个类将被扩展。我想强制任何扩展这个类的东西也将他们的 eventOcurred 工作放在 invokeLater 中,并且看不到如何去做。在我的基类中将 final 放在 eventOccurred 上是行不通的,因为我需要允许 eventOccurred 被覆盖。

4

1 回答 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 回答