01: package test; 02: 03: public abstract class GenericsBeanComparable<T extends Comparable<T>> extends 04: GenericsBean<T> implements Comparable<GenericsBeanComparable<T>> { 05: 06: public int compareTo(GenericsBeanComparableo) { 07: return this.id.compareTo(o.id); 08: } 09: 10: }
Explicacion:
03-04: Se define el tipo que se va a emplear , notese que T es Comparable, dando la posibilidad de utilizar clases como Long, Integer, String, etc.
06-08: Se define como se comparara la unica propiedad que conocemos (id) con el id del otro objeto.
Optimizacion:
- Como en la clase padre, al implementar esta clase, implicitamente, se puede utilizar la funcionalidad de clases como Collections.sort o Collections.binarySearch. Ademas de implementar la funcionalidad de hashCode y equals, heredadas de la clase padre.
Nota:
- La funcionalidad por defecto, solo compara la propiedad id, por lo que seria recomendable sobreescribir el metodo, para poder comparar otras propiedades, en caso de ser necesario.
01: package test; 02: 03: public class Person extends GenericsBeanComparable<Integer> { 04: 05: private String name; 06: private Integer age; 07: 08: public String getName() { 09: return name; 10: } 11: 12: public void setName(String name) { 13: this.name = name; 14: } 15: 16: public Integer getAge() { 17: return age; 18: } 19: 20: public void setAge(Integer age) { 21: this.age = age; 22: } 23: 24: }
En este ejemplo se define la clase persona, la cual, tiene definido un id de tipo Integer, junto con las funciones hashCode, equals y CompareTo. definidas anteriormente, pueden crear 2 objetos distintos y determinar si son o no iguales, incluso ingresarlos en una tabla de hash (Hashtable o HashMap). E incluso, si se define una Lista de objetos Person y utilizar las funciones sort y binarySearch de Collections.
No hay comentarios.:
Publicar un comentario