gpt4 book ai didi

java - 与 Java 泛型相等 : the subclass equals isn't called

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:58 24 4
gpt4 key购买 nike

<分区>

我有一个 Node<T>equals()方法:

public boolean equals(Node<T> other) {
if (this == other)
return true;
if (other == null)
return false;
if (!obj.getClass().equals(other.getObject().getClass()))
return false;

return obj.equals(other.getObject());
}

我只关心我节点中保存的对象是否等于另一个节点中保存的对象(因为两个相等的对象可以保存在我的列表中的不同位置)。

我拿着的物体是一个Token . Token.equals()方法在我的 Node.equals() 时有效方法不:

public class TokenEqualityTest {
public static void main(String[] args) {
Token t = new Token(0);
Token q = new Token(0);
System.out.println("t.equals(q): " + t.equals(q));

Node<Token> tnode = new Node<Token>(null, null, t);
Node<Token> qnode = new Node<Token>(null, null, q);
System.out.println("tnode.equals(qnode): " + tnode.equals(qnode));
}
}

打印:

t.equals(q): true
tnode.equals(qnode): false

如果我在 Token.equals() 处设置断点并运行 eclipse 调试器,我的代码停止一次(在 t.equals(q) 处)。这表明 Node<Token>.equals() 调用Token.equals ,并且我已验证调试器确实逐步执行了 return obj.equals(other.getObject()); 行.

为什么我的 Node.equals 没有曾调用Token.equals当我声明一个 Node<Token>

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com