Транзитивность в Java чаще всего относится к правилу для метода equals()
. Если объекты a, b и c удовлетворяют условию:
a.equals(b)
возвращает true
b.equals(c)
возвращает true
То из этого должно следовать, что:
a.equals(c)
также возвращает true
.Это одно из пяти основных свойств контракта equals()
в Java (рефлексивность, симметричность, транзитивность, согласованность, не-null). Нарушение транзитивности при переопределении equals()
может привести к непредсказуемому поведению в коллекциях, таких как Set
или Map
, где этот метод используется для проверки на равенство.
Пример потенциального нарушения транзитивности при наследовании:
java
java
Транзитивность в Java чаще всего относится к правилу для метода equals()
. Если объекты a, b и c удовлетворяют условию:
a.equals(b)
возвращает true
b.equals(c)
возвращает true
То из этого должно следовать, что:
a.equals(c)
также возвращает true
.Это одно из пяти основных свойств контракта equals()
в Java (рефлексивность, симметричность, транзитивность, согласованность, не-null). Нарушение транзитивности при переопределении equals()
может привести к непредсказуемому поведению в коллекциях, таких как Set
или Map
, где этот метод используется для проверки на равенство.
Пример потенциального нарушения транзитивности при наследовании:
java
java
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.