Результирующие хеш-коды объекта, скопированного с Ecoreutil.Copier, отличаются от оригинала - PullRequest
0 голосов
/ 13 мая 2018

Я использую ECoreUtil.Copier для создания копии моего EObject. Однако точная копия создается, но с другими хэш-кодами.

Почему хэш-коды меняются?

1 Ответ

0 голосов
/ 28 января 2019

Метод equals и hashCode объектов EObjects основаны на идентичности объектов. Это требуется согласно спецификации EMF . Два разных объекта должны считаться разными по equals и также должны иметь разные хэш-коды, даже если их члены имеют одинаковые значения.

Когда вы копируете объекты с ECoreUtil.Copier, результатом являются новые объекты с новыми идентификационными данными.

Если вы хотите сравнить объекты EObject, чтобы выяснить, являются ли они структурно эквивалентными & ndash; даже когда они разные объекты & ndash; тогда вы можете использовать метод EcoreUtils.equals.

...