确定两个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 )