2015-03-12 6 views
2

Как получить доступ к методу/экземпляру из класса Observable в классе Observer, где метод/экземпляр не является объектом наблюдения.Доступ к методам класса Observable в классе Observer

Например, если эти методы getter были в моем классе Observable, но наблюдалась только книга, как мне получить доступ к имени и сохранению в моем классе Observer (а именно в методе update())?

public class MethodEx extends Observable { 
     ... 
    public String getName(){ 
     return this.name; 
    } 

    public String getBook(){ 
     return this.book; 
    } 

    public String getStore(){ 
     return this.store; 
    } 
} 

ответ

2

Обычно вы пропускаете наблюдаемый объект вместе с событием. Это делается, например, для ChangeListener, который использует ChangeEvent. ChangeEvent имеет метод getSource, который сообщает, какой объект был изменен.

Перевод на вашу терминологию, вы могли бы сделать

public String setBook(Book book) { 
    this.book = book; 
    for (UpdateListener listener : listeners) 
     listener.updated(new UpdateEvent(this)); 
} 
+0

Есть ли более простой способ сделать это (например, с меньшим количеством кодирования)? – liny

+0

Вы можете пропустить класс «UpdateEvent» и просто передать 'this' методу' updated', но вы не сможете получить измененный объект магически через стек вызовов или что-то в этом роде. – aioobe