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().