确定两个Java对象是否具有相同的类

我试图做相当于

if ( object1.class == object2.class ) { //do something } 

这当然不起作用,我忽略了什么方法?

如果他们来自同一个class级:

 boolean result = object1.getClass().equals( object2.getClass()); 

现在,如果他们是兼容的类(如果一个是另一个的后代类):

 HashMap<String,Object> hashMap = new HashMap<String,Object>(); LinkedHashMap<String,Object> linkedHashMap = new LinkedHashMap<String,Object>(); boolean result = hashMap.getClass().isAssignableFrom( linkedHashMap.getClass() ); 

由于LinkedHashMap是HashMap的一个子类,因此这个结果variables将是true,所以这可能对你更好,因为它会查找精确的和子类的匹配。

另外,你应该避免在variables上使用“.class”,因为它可能不会给你正确的结果,例如:

 Object someText = "text value"; System.out.println( someText.class.getName() ); //this will print java.lang.Object and not java.lang.String 

当你使用“.class”时,你正在访问variablesstatic属性而不是对象本身的类。

你错过了getClass()方法,

 if (object1.getClass().equals(object2.getClass())) { // do something } 

你可以使用这个:

 if (object1.getClass().equals(object2.getClass())) { //do something } 
 object1.getClass() == object2.getClass() 

你必须使用getClass()方法。

尝试:

 if(object1.getClass() == object2.getClass()) //do something 

您正在寻找在java.lang.Class定义的getClass方法。

(来源: http : //download.oracle.com/javase/7/docs/api/java/lang/Class.html )