Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
Java keywords

instanceof Keyword in Java

The instanceof keyword in Java is a binary operator used to test whether an object is an instance of a specific class or implements a particular interface. It returns true if the object is an instance of the specified type and false otherwise.

Usage

The instanceof operator is primarily used for type checking at runtime, which is particularly useful in scenarios involving polymorphism and casting.

Syntax

object instanceof class/interface
  • object: The reference to the object being tested.
  • class/interface: The class or interface to check against.

Examples

Example 1: Basic Usage

public class InstanceofExample {
    public static void main(String[] args) {
        String str = "Hello, World!";
        boolean result = str instanceof String;
        System.out.println("Is str an instance of String? " + result);
    }
}

In this example, the instanceof operator checks if the variable str is an instance of the String class. The result is true because str is indeed a String.

Example 2: Using instanceof with Interfaces

interface Animal {}
class Dog implements Animal {}

public class InstanceofInterfaceExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        boolean result = dog instanceof Animal;
        System.out.println("Is dog an instance of Animal? " + result);
    }
}

Here, the instanceof operator checks if the object dog is an instance of the Animal interface. The result is true because Dog implements Animal.

Example 3: Type Checking Before Casting

public class InstanceofCastingExample {
    public static void main(String[] args) {
        Object obj = "Hello, World!";
        
        if (obj instanceof String) {
            String str = (String) obj;
            System.out.println("The string is: " + str);
        } else {
            System.out.println("The object is not a String.");
        }
    }
}

In this example, the instanceof operator is used to check if obj is an instance of String before performing a cast. This prevents a ClassCastException at runtime.

Tips and Best Practices

  • Type Safety: Use instanceof to ensure type safety before casting objects. This helps avoid ClassCastException.
  • Polymorphism: Utilize instanceof when working with polymorphic code to determine the actual type of an object.
  • Null Checks: The instanceof operator returns false if the object being tested is null.
    String str = null;
    boolean result = str instanceof String; // result is false
  • Avoid Overuse: While instanceof is useful, overusing it can indicate poor design. Consider using polymorphism and method overriding to handle type-specific behavior.
  • Interfaces: Use instanceof to check if an object implements a particular interface, which can be useful in collections and generic programming.