[英]Determine if two Java objects are of the same class
我试图做相同的
if ( object1.class == object2.class )
{
//do something
}
这当然不起作用,我可以忽略哪种方法?
如果他们是从完全相同的类:
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属性而不是对象本身的类。
你错过了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 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.