L'utilisation de l'interface Comparator serait lourde si l'on devait définir une classe de réalisation pour chaque méthode de comparaison ; ceci peut être évité, car Java permet d'instancier des classes anonymes :
class TestComparaison {
  // ...
  public static void main(String[] args) {
    Comparator ordreX = new Comparator() {
      public int compare(Object o1, Object o2) {
        Point p1 = (Point) o1;
        Point p2 = (Point) o2;
        int dx = p1.x - p2.x;
        return dx!=0 ? dx : p1.y - p2.y ;
      }
    };
    // ...
    Point m = (Point) min(new Point(2, 3), new Point(3, 2), ordreX);
  }
}
L'expression new Comparator() { ... }, qui utilise le nom de l'interface, permet à la fois de créer une instance et de définir la méthode compare().