The java.lang.Object.getClass() method returns the runtime class of an object.

The operator instanceof is used when you know the kind of class you want to check against in advance.

The function isInstance() is primarily intended for use in code dealing with runtime identification.

For instance, you can use it to write a method that checks to see if two arbitrarily typed objects are assignment-compatible, like:

public boolean areObjectsAssignable(Object left, Object right) {
    return left.getClass().isInstance(right);

The example code below produces the following when run from the command window:

C:\work>java ObjectDemo
Thu Mar 22 16:16:39 EDT 2018
cal.getClass(): class java.util.GregorianCalendar
cal instanceof GregorianCalendar: true

c: class java.lang.String
Class of Object obj is : java.lang.String

i.getClass(): class java.lang.Integer

r.getClass(): class Gen
r.getClass().getName(): Gen

r.getClass().isInstance(i): false
r instanceof Gen: true
obj instanceof Gen: true


import java.util.GregorianCalendar;

public class ObjectDemo {

   public static void main(String[] args) {

      // create a new ObjectDemo object
      GregorianCalendar cal = new GregorianCalendar();

      // print current time
      System.out.println("" + cal.getTime());

      // print the class of cal
      System.out.println("cal.getClass(): " + cal.getClass());
      System.out.println("cal instanceof GregorianCalendar: " + (cal instanceof GregorianCalendar));

      Object obj = new String("Java programming");
      Class c = obj.getClass();
      System.out.println("c: " + c);
      System.out.println("Class of Object obj is : " + c.getName());

      // create a new Integer
      Integer i = new Integer(5);

      // print the class of i
      System.out.println("i.getClass(): " + i.getClass());

	Gen r = new Gen("G1");
	System.out.println("r.getClass(): " + r.getClass());
	System.out.println("r.getClass().getName(): " + r.getClass().getName());

	obj = Object.class.cast(r);
	System.out.println("r.getClass().isInstance(i): " + r.getClass().isInstance(i));
	System.out.println("r instanceof Gen: " + (r instanceof Gen));
	System.out.println("obj instanceof Gen: " + (obj instanceof Gen));

class Gen {
   String name;

   Gen(String str) {
	name = str;

   public String toString() {
		return name;

Maintained by John Loomis, updated Thu Mar 22 16:15:58 2018