调试时,对象实例表示“结果= {SomeClass @ 816}”是什么意思?

问题描述 投票:2回答:1

我正在调试我的Java程序,并且有一个名为“ SomeClass”的类的实例“ instance1”。当我评估变量“ instance1”时,它说结果= {SomeClass @ 816}。

“ @ 816”实际上是什么意思?

我知道不确定hashCode(),它是实例内存地址吗?如果是这样,如何在代码中“查看”实例地址?调用对象本身的哪种方法?

注意:我正在使用IntelliJ Idea

public class SomeClass {

private String name;
private int id;

@Override
public String toString() {
    return this.name + this.id;
}

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }
    String objName =  ((SomeClass) o).name;
    return this.name.equals(objName);
}

@Override
public int hashCode() {
    return this.name.hashCode();
}
java intellij-idea instance
1个回答
1
投票

那个816属于每个java对象的identityHashCode(方法System.identityHashCode())。

无论是[[您的类 替代还是hashcode()方法都没有关系,因为identityHashCode()将调用您的对象的自然hashcode()方法。

docs

为给定对象返回与将返回的哈希码相同的哈希码通过默认方法hashCode(),无论给定对象的类重写hashCode()
© www.soinside.com 2019 - 2024. All rights reserved.