如何区分同一Class的不同实例对象

Java对象标识

如何区分同一Class的不同实例对象

标签: Java


今天在一个Java群里有一个群友问了一个问题:

public class AClass {

    public static void main(String[] args) {
        SubClass s1 = new SubClass();
        s1.print();
        SubClass s2 = new SubClass();
        s2.print();
    }
    
}

class SubClass{
     void print(){
        System.out.println("s1 or s2 invoke thie method?");
    }
}

SubClass实例化了两个对象,分别是s1s2,两个对象都调用了print()方法,在方法中我们如何得知到底是哪个对象调用了这个方法?

有人说使用System.out.println(this.getClass().getName());,这显然是不行的。这样只能得到SubClass这个类型的信息,不管是s1还是s2对象,他们都是属于SubClass类型。

我建议使用System.out.println(this.hashCode());,这样可以得到不同的对象的哈希码。更改print()方法之后,得到结果如下:

1908246931
1385385019

这样,不同的对象拥有不同的哈希码,也就拥有了一个唯一标识。

转载于:https://www.cnblogs.com/baininghan/p/4221943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值