在GWT中比较两个JavaScriptObjects的最佳方法是什么?

时间:2011-01-14 00:04:18

标签: java gwt

看起来hashCode()和equals()被声明为final。因此无法覆盖实施。它还声明如果对象是JavaScript相同的(三等号),则equals()返回true。我不太确定这意味着在GWT中创建两个相同的JavaScriptObject并将它们与equals()进行比较会返回false。此外,看起来hashcode()使用单调递增的计数器将哈希码分配给底层JavaScript对象。如果我想将JavaScriptObjects存储在Set中,这会使事情变得复杂。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:5)

这取决于您希望针对您的情况使用哪种平等标准。

  • 如果您想要对象标识,可以使用预定义的equals()和hashCode() - 并将JavaScriptObjects直接放在HashSet中。
  • 如果你需要一个不同的相等概念,你可以编写自己的Comparator并将JavaScriptObjects放在例如由新TreeSet(comparator)创建的TreeSet。
  • 如果您需要将JavaScriptObjects放在HashSet(而不是TreeSet)中,并且仍然需要不同的相等概念,则不能将JavaScriptObjects直接放在Set中。然后你必须编写一个包含JavaScript的包装类,并实现equals()和hashCode()。