same
проверяет, являются ли оба объекта на самом деле одним и тем же экземпляром (равенство ссылок).eq
вызывает equals
и, следовательно, проверяет, имеют ли оба значения одинаковые значения (равенство значений).
Имейте в виду, что реализация equals
по умолчанию использует ==
внутри, и поэтому eq
будет делатьтак же, как same
, если вы используете классы, которые не имеют правильного equals
переопределения.
Но все же лучше заявить о своем намерении, используя same
для равенства ссылок и eq
для равенства стоимости.Это также может помочь вам находить ошибки (то есть обнаруживать, что вы забыли переопределить equals
).