Este fragmento de código para el SetObserver interfaz se toma de Effective Java (Evitar la sincronización excesiva artículo 67)¿Qué es una interfaz de devolución de llamada en Java?
public interface SetObserver<E> {
// Invoked when an element is added to the observable set
void added(ObservableSet<E> set, E element);
}
Y el SetObserver
se pasa a addObserver()
y removeObserver
método como se indica a continuación:
// Broken - invokes alien method from synchronized block!
public class ObservableSet<E> extends ForwardingSet<E> {
public ObservableSet(Set<E> set) {
super(set);
}
private final List<SetObserver<E>> observers =
new ArrayList<SetObserver<E>>();
public void addObserver(SetObserver<E> observer) {
synchronized (observers) {
observers.add(observer);
}
}
public boolean removeObserver(SetObserver<E> observer) {
synchronized (observers) {
return observers.remove(observer);
}
}
private void notifyElementAdded(E element) {
synchronized (observers) {
for (SetObserver<E> observer : observers)
observer.added(this, element);
}
}
Bloch se refiere a la interfaz SetObserver<E>
como call back interface. ¿Cuándo se llama una interfaz llamada call back en Java?
posible duplicado de [¿Qué es una función de devolución de llamada?] (Http://stackoverflow.com/questions/824234/what-is-a-callback-function) – assylias
'' ObservableSet no es una interfaz, supongo que te refieres a 'SetObserver ' –
@AlonsoDominguez sí, fue un error tipográfico. editando la pregunta en este momento. – Geek