2016-05-04 15 views
0

注意:私はこの主題では新しいです。インスタンス化されたオブジェクト情報転送のJavaオーバーライドメソッド

クラスイベントがあるとします。

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); 
    } 
} 

、イベントeがpathFollowed(int型の場所)に呼びかけたびmanagerLocationの値を設定するのいずれかの方法があります。私の目標は、イベントのいずれかのイベントがarraylistがpathLollow(int location)を呼び出すときにmanagerLocationが "location"(pathフォローされたメソッドの入力を参照する "location")に設定されることです。

元はpathFollowedメソッドのオーバーライドを考えていましたが、イベントがaddEventメソッドに到達するまでに既にインスタンス化されていて、これで変更できないため方法。

ありがとうございます。

答えて

1

多分何らかのリスナーパターンですか?

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; 
    } 
} 

私はあなたの目的が何であるか知らないが、多分それはあなたが考えて取得しますので、これは、だけの種類 - の - 一般的な例です。

関連する問題