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;
}
}
这只是一个笼统的例子,因为我不知道你的目的是什么,但也许它会让你思考。
请注意:我是这个学科的新手。
假设我有一个 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;
}
}
这只是一个笼统的例子,因为我不知道你的目的是什么,但也许它会让你思考。