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
Most Recent java Faqs
- How to avoid an java.util.ConcurrentModificationException with ArrayList?
- How to convert a given array to a list in Java?
- How to make Java objects eligible for garbage collection?
- What are local variables in Java?
- What are instance variables in Java?
- How many backslashes?
- What are class variables in Java?
Most Viewed java Faqs
- How to use HttpURLConnection POST data to web server?(24746)
- What is runtime polymorphism in Java?(18328)
- How to add BASIC Authentication into HttpURLConnection?(16088)
- What is String literal pool?(14754)
- Can the run() method be called directly to start a thread?(13991)
- What does Class.forname method do?(10593)
- Can transient variables be declared as 'final' or 'static'?(10446)