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

aff*_*oke 6 java gwt

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

Chr*_*her 5

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

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