Because it a.getClass()returns Class<A>, but you must passA :
System.out.println(A.class.isInstance(a));
If you have two instances Classand want to check assignment compatibility, then you need to use isAssignableFrom():
System.out.println(A.class.isAssignableFrom(Object.class)); // false
System.out.println(Object.class.isAssignableFrom(A.class)); // true
source
share