首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当toString()和hashCode()被覆盖时,如何获取java中对象的"对象引用"?

当toString()和hashCode()被覆盖时,可以使用System.identityHashCode()方法获取对象的"对象引用"。

System.identityHashCode()方法返回对象的哈希码,这个哈希码是基于对象的内存地址计算出来的,因此它是唯一的,并且不会因为对象的内容发生变化而改变。

例如,可以使用以下代码获取对象的"对象引用":

代码语言:java
复制
class MyClass {
    private int id;
    private String name;

    public MyClass(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "MyClass{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj1 = new MyClass(1, "Object 1");
        MyClass obj2 = new MyClass(2, "Object 2");

        System.out.println("Object 1: " + obj1);
        System.out.println("Object 2: " + obj2);

        System.out.println("Object 1 hashCode: " + obj1.hashCode());
        System.out.println("Object 2 hashCode: " + obj2.hashCode());

        System.out.println("Object 1 identityHashCode: " + System.identityHashCode(obj1));
        System.out.println("Object 2 identityHashCode: " + System.identityHashCode(obj2));
    }
}

输出结果如下:

代码语言:txt
复制
Object 1: MyClass{id=1, name='Object 1'}
Object 2: MyClass{id=2, name='Object 2'}
Object 1 hashCode: 1137894938
Object 2 hashCode: 1137894940
Object 1 identityHashCode: 1829164700
Object 2 identityHashCode: 1829164701

从输出结果可以看出,即使obj1和obj2的内容相同,但它们的哈希码和"对象引用"都是不同的。因此,可以使用System.identityHashCode()方法获取对象的"对象引用"。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券