See if two object have the same type

instanceof, java

Solution

You mean something like

obj1.getClass().equals(obj2.getClass())

This should return true just if both `obj1` and `obj2` are of the same specific class.

But this won't work if you are comparing `A` with `B extends A`. If you want equality that returns true even if one is a subtype of another you will have to write a more powerful comparison function. I think that you can do it by looping with `getSuperClass()` to go up the hierarchy tree.

I think a simple solution can be also to do `A.getClass().isAssignableFrom(B.getClass())`, assuming that `B extends A`.

Problem

Let's say that I have a class A, and that B,C,D are derived from A. If I want to know what's the type of an object referenced, I can declare: ``` // pseudo-code if(obj instanceof B) < is B> else if(obj instanceof C) < is C> else <is D> ``` This because I am sure that the classes derived from A are only B,C and D. But what if I want just to check that two references point to the same kind of object? So something like: ``` if(obj1 instanceof obj2) <do something> ``` But of course the syntax is wrong.How to check this without one thousand if-else?

Original source