What is 'instanceof'?

The instanceof operator is used to check whether the run-time type of an object is compatible with a given type (15.20.2 Type Comparison Operator instanceof):

expression instanceof type

The type of an expression operand of the instanceof operator must be a reference type or the null type; otherwise, a compile-time error occurs. The type mentioned after the instanceof operator must denote a reference type; otherwise, a compile-time error occurs.

An instanceof expression evaluates to true if both of the following conditions are met:

  • expression is not null.
  • expression can be cast to type. That is, a cast expression of the form (type)(expression) will complete without raising a ClassCastException.

It is a compile-time error if the type mentioned after the instanceof operator does not denote a reifiable type.

If a cast of the expression to the type would be rejected as a compile-time error, then the instanceof relational expression likewise produces a compile-time error. In such a situation, the result of the instanceof expression could never be true.

Here is an example code:

public class Test{
public static void main(String[] args) {
String s = "XyzWS.com";
byte[] b = s.getBytes();
System.out.println(b instanceof byte[]);
System.out.println(b instanceof Object);
//System.out.println(b instanceof Object[]);
//byte[] can not cast to Object[]
//System.out.println(b instanceof byte);
//byte is primitive type


Further Reading


4.7 Reifiable Types

What is a reifiable type?

Printer-friendly version Printer-friendly version | Send this 
article to a friend Mail this to a friend

Previous Next vertical dots separating previous/next from contents/index/pdf Contents

  |   |