instanceof关键字

关键字 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()
}


原文地址:https://www.cnblogs.com/submarinex/p/2009901.html