Java 实例化对象信息传输中的覆盖方法

Java Override Method In Instantiated Object Information Transfer

请注意:我是这个学科的新手。

假设我有一个 class 事件。

public class Event {
    //constructors, etc.

    public void pathFollowed(int location) {
        //this method could be called at any time
    }
}

还有一个名为 EventManager 的 class。

public class EventManager {
    private int managerLocation;
    private ArrayList<Event> events;
    public EventManager() {
        events = new ArrayList<Event>();
    }
    public void addEvent(Event e) {
        //THIS IS THE AREA OF INTEREST
        events.add(e);
    }
}

在 "area of interest" 评论中,是否有任何方法可以在事件 e 调用 pathFollowed(int location) 时设置 managerLocation 的值。我的目标是,当事件数组列表中的任何事件调用 pathFollowed(int location) 时,managerLocation 将被设置为 "location"("location" 指的是 pathfollowed 方法中的输入)。

我原本想覆盖 pathFollowed 方法,但后来我意识到这是不可能的,因为当事件到达 addEvent 方法时,它已经被实例化并且不能在这种方式。

提前致谢。

也许是某种监听器模式?

public class Event {
    private List<PathListener> pls; //Or just one if you know you'll only need one
    //constructors, etc.

    public void pathFollowed(int location) {
        //this method could be called at any time
        for(PathListener pl : pls)
            pl.notifyLocation(location);
    }

    public addPathListener(PathListener pl) {
        pls.add(pl);
    }
}

事件管理器:

public class EventManager implements PathListener {
    private int managerLocation;
    private ArrayList<Event> events;
    public EventManager() {
        events = new ArrayList<Event>();
    }
    public void addEvent(Event e) {
        e.addPathListener(this);
        events.add(e);
    }

    @Override
    public notifyLocation(int location) { //Of the PathListener interface
        managerLocation = location;
    }
}

这只是一个笼统的例子,因为我不知道你的目的是什么,但也许它会让你思考。