@Fancy-Bai
2015-01-13T09:40:34.000000Z
字数 554
阅读 2220
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实例化了两个对象,分别是s1和s2,两个对象都调用了print()方法,在方法中我们如何得知到底是哪个对象调用了这个方法?
有人说使用System.out.println(this.getClass().getName());,这显然是不行的。这样只能得到SubClass这个类型的信息,不管是s1还是s2对象,他们都是属于SubClass类型。
我建议使用System.out.println(this.hashCode());,这样可以得到不同的对象的哈希码。更改print()方法之后,得到结果如下:
19082469311385385019
这样,不同的对象拥有不同的哈希码,也就拥有了一个唯一标识。
