Is there something like instanceOf(Class<?> c) in Java? Is there something like instanceOf(Class<?> c) in Java? java java

Is there something like instanceOf(Class<?> c) in Java?


Class.isInstance does what you want.

if (Point.class.isInstance(someObj)){    ...}

Of course, you shouldn't use it if you could use instanceof instead, but for reflection scenarios it often comes in handy.


I want to check if an object o is an instance of the class c or of a subclass of c. For instance, if p is of class Point I want x.instanceOf(Point.class)

Um... What? What are o, p and x?

I want it to work also for primitive types. For instance, if x is an integer then x.instanceOf(Integer.class) and also x.instanceOf(Object.class) should be true.

No. It shouldn't even compile. Primitives are not objects, and you cannot call methods on them.

Anyway, there are three things, one of which can definitely achieve what you want (they differ somewhat in where exactly the apply:

  • The instanceof operator if you know the class at compile time.
  • Class.isInstance() if you want to check an object's class against a class not known at compile time.
  • Class.isAssignableFrom() if you want to check the assignability given two class objects.


x instanceof Integerx instanceof Object

you just have to use the right syntax

for primitve types, you have to do it completely different. Since you cannot create methods for them , you need a class that keeps the method. So instead of "x.instanceOf(Integer.Class)", you have to call "MyClassComparer.instanceOf(x, Integer.Class)" or something like that. This could easily be implemented by overloading methods, but I fail to see a case when that functionality would be desireable at all.