2011-01-14 13 views
6

Parece que hashCode() y equals() se declaran como finales. Por lo tanto, anular la implementación no es posible. También establece que equals() devuelve verdadero si los objetos son idénticos a JavaScript (triple-igual). No estoy muy seguro de lo que significa crear dos JavaScriptObjetos idénticos en GWT y compararlos con equals() devuelve falso. También parece que hashcode() usa un contador monótonamente creciente para asignar un código hash al objeto JavaScript subyacente. Si quisiera almacenar JavaScriptObjects en un conjunto, esto complicaría las cosas. Cualquier ayuda sería muy apreciada.¿Cuál es la mejor manera de comparar dos objetos JavaScript en GWT?

Respuesta

5

Depende de qué criterios de igualdad desee usar para su situación.

  • Si desea identidad de objeto, puede usar los valores predefinidos equals() y hashCode() - y colocar los objetos JavaScript directamente en un HashSet.
  • Si necesita una noción de igualdad diferente, puede escribir su propio comparador y colocar los objetos JavaScript en, p. Ej. un TreeSet, creado por el nuevo TreeSet(comparator).
  • Si necesita colocar JavaScriptObjects en un HashSet (no en un TreeSet), y aún necesita una noción de igualdad diferente, no puede colocar los JavaScriptObjects directamente en el conjunto. Entonces tendría que escribir una clase contenedora, que contiene el JavaScriptObject, e implementa equals() y hashCode().
+0

Gracias por el consejo Chris. – affablebloke

+0

Escribir una clase de contenedor genérico que implemente sus propios equals() y hashCode() fue la solución, ya que estoy usando MultiSelectionModel de GWT y las partes internas subyacentes de MultiSelectionModel usa HashMap y HashSet. – affablebloke

Cuestiones relacionadas