Java 检查接口的两个对象是否相等(不重写)

Java 检查接口的两个对象是否相等(不重写),java,object,if-statement,interface,equals,Java,Object,If Statement,Interface,Equals,我有一个界面: interface Query { Set<SelectExpression> getSelectRows(); String getWhereClause(); } 接口查询 { 设置getSelectRows(); 字符串getWhere子句(); } 我有一个类,我想检查这个接口的两个不同实现是否产生相同的结果 当我这样做时: 案例1:if(query1.equals(query2))我得到一些hashcode,它们不一样 案例2:if(q

我有一个界面:

interface Query
{
    Set<SelectExpression> getSelectRows();

    String getWhereClause();
}
接口查询
{
设置getSelectRows();
字符串getWhere子句();
}
我有一个类,我想检查这个接口的两个不同实现是否产生相同的结果

当我这样做时:

案例1:
if(query1.equals(query2))
我得到一些hashcode,它们不一样

案例2:
if(query1.getSelectRows().equals(query2.getSelectRows())
它们是相同的

案例3:
if(query1.getWhere子句().equals(query2.getWhere子句())
它们是相同的


在不更改接口的情况下,是否仍可以检查query1和query2是否相同?我无权修改接口代码。[我读过关于重写内置方法的内容]

为什么
query1.equals(query2)
不起作用?query1是'xyz'$1@2526'查询2是'abc@2531“这与
equals
方法无关。这看起来像是默认的
toString
实现的输出。
Query
的实现应该正确地实现
equals
。如果您将A类对象与B类对象进行比较,它们并不相等,除非
equals()
的实现非常古怪。A类和B类没有任何对象。实现有点复杂。它们只实现接口中的方法。我想确认这些类返回的值是相同的。