请注意:我是这个主题的新手。
假设我有一个班级活动。
public class Event {
//constructors, etc.
public void pathFollowed(int location) {
//this method could be called at any time
}
}
一个叫做EventManager的类。
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);
}
}
在“感兴趣的区域”注释中,有什么方法可以在Event e调用pathFollowed(int location)时设置managerLocation的值。我的目标是当事件arraylist中的任何事件调用pathFollowed(int location)时,managerLocation将被设置为“location”(“location”指的是pathfollowed方法中的输入)。
我原本想要覆盖pathFollowed方法,但后来我意识到这是不可能的,因为当事件到达addEvent方法时,它已经被实例化并且不能以这种方式改变
提前致谢。
答案 0 :(得分:0)
也许是某种听众模式?
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);
}
}
eventmanager进行:
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;
}
}
这只是一个通用的例子,因为我不知道你的目的是什么,但也许它会让你思考。