Determine if two Java objects are of the same class

JavaClassComparison

Java Problem Overview


I am attempting to do the equivalent of

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

which of course doesn't work, what method am I overlooking?

Java Solutions


Solution 1 - Java

If they're from the exact same class:

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

Now if they are compatible classes (if one is of a descendent class to the other):

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

As LinkedHashMap is a subclass of HashMap this result variable will be true, so this might probably be better for you as it's going to find exact and subclass matches.

Also, you should avoid using ".class" on variables, as it might not give you the correct result, example:

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

When you're using ".class" you're acessing the variable static property and not the class of the object itself.

Solution 2 - Java

You're missing the getClass() method,

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

Solution 3 - Java

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

Solution 4 - Java

You're looking for the getClass method, defined in java.lang.Class.

(Source: <http://download.oracle.com/javase/7/docs/api/java/lang/Class.html>;)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionToothlessRebelView Question on Stackoverflow
Solution 1 - JavaMaurício LinharesView Answer on Stackoverflow
Solution 2 - JavaRich AdamsView Answer on Stackoverflow
Solution 3 - JavachubbsondubsView Answer on Stackoverflow
Solution 4 - JavaJetbeardView Answer on Stackoverflow