Tengo una clase genérica con dos variables de tipo, que implementa java.lang.Comparable.Crear un compareTo a una clase genérica que implementa Comparable
public class DoubleKey<K,J> implements Comparable<DoubleKey<K,J>>{ private K key1; private J key2; public DoubleKey(K key1, J key2){ this.key1 = key1; this.key2 = key2; } public K getFirstKey(){ return this.key1; } public J getSecondKey(){ return this.key2; } // need for Comparable interface public int compareTo(DoubleKey<K,J> aThat){ ... } }
Porque lo implementé con Comparable, tengo que escribir el método compareTo(). Como K, J puede ser CUALQUIER tipo, tengo problemas para compararlos por completo. ¿Hay alguna manera de poder atrapar todos los tipos posibles (primitivo, envoltorio, objeto) en la comparación? ¡Gracias por la ayuda!
Pero luego debe asegurarse de documentar esto (que 'compareTo' depende de' toString() 'de las partes), y que' compareTo' no es consistente con 'equals'. –
Tiene sentido si usa, por ejemplo, DoubleKey.A continuación, puede usar compare para comparar los valores de objeto J cómo desea dependiendo de qué campos están en ellos llamando a sus propios métodos de comparación. Por ejemplo, tamaño y peso. Alternativamente, podría comparar las cadenas de teclas alfabéticamente. Todo depende del desarrollador del tipo de datos abstractos DoubleKey para implementar el comportamiento de su elección y documentarlo bien. –