Qu'est ce qu'un retour d'appel de l'interface en Java?

Cet extrait de code pour l'interface SetObserver est pris de Efficace Java (Éviter les excès de Synchronisation Point 67)

public interface SetObserver<E> {
//Invoked when an element is added to the observable set
void added(ObservableSet<E> set, E element);
}

Et la SetObserver est passé à addObserver() et removeObserver méthode donnée ci-dessous :

//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 réfère à la SetObserver<E> interface comme un de retour d'appel de l'interface . A quand une interface appelée un retour d'appel de l'interface en Java?

double possible de qu'est Ce qu'une fonction de rappel?
ObservableSet<E> n'est pas une interface, je suppose que tu veux dire SetObserver<E>
oui, c'était une faute de frappe. l'édition de la question dès maintenant .
Le rappel est très générale de ce terme utilisé en informatique. Quand un morceau de code s'intéresse à un événement, il enregistre une fonction à appeler lorsqu'un événement se produit, de sorte que ce morceau de code peut faire ce qui est nécessaire. Il n'est pas spécifique à javascript. En C/C++, il y avait des pointeurs de fonction, en C# il y a des délégués et en Java, nous le faisons à l'aide d'interfaces.
Ces Interfaces peuvent être utilisées pour mettre en œuvre rappels en Java. Un callback est une situation où vous souhaitez passer un référence pour certains comportement et avoir un autre objet de l'appeler plus tard. En C ou en C++, c'est le premier territoire pour les pointeurs de fonction. En Java, on utilise interfaces à la place.

OriginalL'auteur Geek | 2012-07-20