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