Su pregunta muestra una falta de comprensión de Comparable
y Comparator
.
A Comparator
es capaz de comparar otros dos objetos;
MyClass o1 = new MyClass();
MyClass o2 = new MyClass();
MyComparator c1 = new MyComparator();
if (c1.compare(o1, o2) > 0) {
...
}
algo que es Comparable
es capaz de ser comparado con otros objetos;
MyClass o1 = new MyClass();
MyClass o2 = new MyClass();
if (o1.compareTo(o2)) > 0) {
...
}
Es muy raro comparar un comparador, por lo que su ejemplo;
if (o1.compare(o1, o2) > 0) {
...
}
realmente no tiene sentido. De todos modos, en la respuesta, ¿por qué no está compareTo()
estático? Básicamente, Comparator
es una interfaz, y las interfaces no pueden tener métodos estáticos. ¿Por qué? Bueno, no tiene sentido para ellos. Una interfaz se trata de definir un contrato, pero no proporciona ninguna implementación.
La respuesta de Jon es correcta, pero su punto es bueno. En teoría, sería útil si todas las clases comparables tuvieran un método de "comparación" estático, pero no hay forma de imponer eso a través de una interfaz. –