Check if an object belongs to a class in Java [duplicate]
Solution 1:
The instanceof
keyword, as described by the other answers, is usually what you would want.
Keep in mind that instanceof
will return true
for superclasses as well.
If you want to see if an object is a direct instance of a class, you could compare the class. You can get the class object of an instance via getClass()
. And you can statically access a specific class via ClassName.class
.
So for example:
if (a.getClass() == X.class) {
// do something
}
In the above example, the condition is true if a
is an instance of X
, but not if a
is an instance of a subclass of X
.
In comparison:
if (a instanceof X) {
// do something
}
In the instanceof
example, the condition is true if a
is an instance of X
, or if a
is an instance of a subclass of X
.
Most of the time, instanceof
is right.
Solution 2:
If you ever need to do this dynamically, you can use the following:
boolean isInstance(Object object, Class<?> type) {
return type.isInstance(object);
}
You can get an instance of java.lang.Class
by calling the instance method Object::getClass
on any object (returns the Class
which that object is an instance of), or you can use class literals (for example, String.class
, List.class
, int[].class
). There are other ways as well, through the reflection API (which Class
itself is the entry point for).
Solution 3:
Use the instanceof
operator:
if(a instanceof MyClass)
{
//do something
}
Solution 4:
I agree with the use of instanceof
already mentioned.
An additional benefit of using instanceof
is that when used with a null
reference instanceof
of will return false
, while a.getClass()
would throw a NullPointerException
.