#java #object #if-statement #interface #equals
#java #объект #if-оператор #интерфейс #равно
Вопрос:
У меня есть интерфейс :
interface Query
{
Set<SelectExpression> getSelectRows();
String getWhereClause();
}
У меня есть класс, в котором я хочу проверить, дают ли две разные реализации этого интерфейса одинаковые результаты.
Когда я делаю :
Случай 1: if (query1.equals(query2))
я получаю некоторый хэш-код, и они не совпадают.
Случай 2: if (query1.getSelectRows().equals(query2.getSelectRows()))
они одинаковы.
Случай 3: if (query1.getWhereClause().equals(query2.getWhereClause()))
они одинаковы.
Есть ли способ проверить, совпадают ли query1 и query2 без изменения интерфейса?У меня нет права изменять код интерфейса. [Я читал о переопределении встроенных методов]
Комментарии:
1. Почему именно не
query1.equals(query2)
работает?2. запрос 1 равен ‘xyz $ 1 @ 2526’, а запрос 2 равен ‘abc @ 2531’
3. Это не имеет никакого отношения к
equals
методу. Это похоже на результатtoString
реализации по умолчанию. РеализацииQuery
должны выполнятьсяequals
правильно.4. Если вы сравниваете объект класса A с объектом класса B, они не равны, за исключением очень эксцентричной реализации
equals()
.5. Классы A и B не имеют никаких объектов. Реализация немного сложна. Они реализуют только методы в интерфейсе. Я хочу подтвердить, что значения, возвращаемые из этих классов, одинаковы.