Search code examples
javainstanceofcomparison-operators

Java instanceof operator


Is there a valid class Type variable that can be used with the instanceof operator? For Example:

String s = "abc";

Class<?> classType = String.class;

if (s instanceof classType) {
    //do something
}

as an alternative to this:

if (s.getClass() == classType) {
    //do something
}

Would there be any performance benefit?


Solution

  • What you're doing is not actually the same. Consider what happens with subclasses (I know you can't subclass String, so in the String case it doesn't matter).

    class A {}
    class B extends A {}
    
    B b = new B();
    b instanceof A // true
    b.getClass() == A.class // false
    

    If you have an object and you want to know if it is an instanceof a certain type and you have the Class object, you can use the Class#isInstance method.

    In either case, I expect performance differences to be insignificant.