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

如何区分同一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

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

posted @ 2015-01-13 17:43  fancyebai  阅读(380)  评论(0编辑  收藏  举报