Java 如何为只包含对下一个节点的引用的节点实现HashCode()?

Java 如何为只包含对下一个节点的引用的节点实现HashCode()?,java,reference,hashcode,Java,Reference,Hashcode,从代码中的注释来看,我的问题实际上是如何唯一地标识引用本身,就像C中的地址一样。这里不需要做什么,节点已经有了一个默认实现,该实现根据它所在的内存位置返回一个哈希代码。如果希望节点的哈希代码表示它自己的引用,也就是说,如果没有覆盖equals(Object),那么就不需要覆盖哈希代码()没有问题 如果希望节点的哈希代码表示其下一个节点的引用,也就是说,如果等于(对象),则如下所示: public class Node { private Node nextNode; @Over

从代码中的注释来看,我的问题实际上是如何唯一地标识引用本身,就像C中的地址一样。

这里不需要做什么,
节点
已经有了一个默认实现,该实现根据它所在的内存位置返回一个哈希代码。

如果希望
节点
的哈希代码表示它自己的引用,也就是说,如果没有覆盖
equals(Object)
,那么就不需要覆盖
哈希代码()
没有问题


如果希望
节点
的哈希代码表示其
下一个节点
的引用,也就是说,如果
等于(对象)
,则如下所示:

public class Node {
    private Node nextNode;

    @Override
    public int hashCode() {
        //How to implement this?
        //Because you just have a attribute which is a reference.
        //I think the attribute is almost useless, because if you use the HashCode of the attribute, you will finally fall into a useless loop.
        //Thus, I think you should find a way to represent the HashCode of reference (instance) itself.
    }
}
-然后您可以使用:


我猜这应该是一个基类。如果是这样的话,就不用麻烦实现它了,因为只指向下一个节点的节点没有用,是吗?我猜,如果不扩展它,你永远不会使用它。也许可以将类抽象化以实现这一点?如果确实要重写hashcode,正确的声明是
public int hashcode(){}
谢谢!接受,因为提及1.“身份验证码”。HashCode和indentityHashCode之间的差异可以找到2.您是正确的Sun的SDK HashCode()方法的默认实现是一个返回值*,它将是对象的内存地址。
@Override
public boolean equals(Object that)
{
    return ((that instanceof Node) && (nextNode == ((Node) that).nextNode));
}
@Override
public int hashCode()
{
    return System.identityHashCode(nextNode);
}