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

2022-08-31 17:49:42

我正在尝试做相当于

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

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


答案 1

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

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

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

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

当您使用“.class”时,您将访问变量静态属性,而不是对象本身的类。


答案 2

你错过了方法,getClass()

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

推荐