确定两个Java对象是否属于同一个类

时间:2011-07-25 20:17:48

标签: java class comparison

我试图做相同的

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

当然不起作用,我可以忽略哪种方法?

6 个答案:

答案 0 :(得分:72)

如果他们来自完全相同的类:

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的子类,因此结果变量将为true,因此这对您来说可能更好,因为它会找到精确匹配和子类匹配。

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

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

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

答案 1 :(得分:14)

您错过了getClass()方法,

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

答案 2 :(得分:6)

您可以使用:

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

答案 3 :(得分:4)

object1.getClass() == object2.getClass()

答案 4 :(得分:4)

您必须使用getClass()方法。

尝试:

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

答案 5 :(得分:4)

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

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