关键字 instanceof 可以用来测试一个对象是不是指定类型的一个对象。
if (objectReference instanceof type)
public class MainClass
{
public static void main(String[] a)
{
String s = "Hello";
if (s instanceof java.lang.String)
{
System.out.println("is a String");
}
}
}
is a String
如果测试一个空引用变量,将会返回false
public class MainClass
{
public static void main(String[] a)
{
String s = null;
if (s instanceof java.lang.String)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
}
false
由于子类是超类的一个类型,在以下语句中,Child是Parent的子类,所以返回true
class Parent
{
public Parent()
{}
}
class Child extends Parent
{
public Child()
{
super();
}
}
public class MainClass
{
public static void main(String[] a)
{
Child child = new Child();
if (child instanceof Parent)
{
System.out.println("true");
}
}
}
true
以上部分转自 http://www.java2s.com/CN/Tutorial/Java/0060__Operators/TheinstanceofKeyword.htm
instanceof 可用于强制转换前的判断
// 源于java.math.MathContext中的equals()方法
public boolean equals(Object x)
{
MathContext mc;
if (!(x instanceof MathContext))
return false;
mc = (MathContext) x;
return mc.precision == this.precision
&& mc.roundingMode == this.roundingMode; // no need for .equals()
}