使用instanceof操作符判断对象类型

当在程序执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCaseException异常。语法如下
myobject instanceof ExampleClass

例题

创建Parallelogram类和3个内部类Quadrangle、Square、Anything.
class Quadrangle { // 四边形类
    public static void draw(Quadrangle q) { // 四边形类中的方法
        // SomeSentence
    }
}
class Square extends Quadrangle{
    //SomeSentence
}
class Anything{
    //SomeSentence
}
public class Parallelogram extends Quadrangle { // 平行四边形类,继承了四边形类
    public static void main(String args[]) {
        Quadrangle q = new Quadrangle();    //实例化父类对象
        //判断父类对象是否为Parallelogram子类的一个实例
        if(q instanceof Parallelogram) {
            Parallelogram p = (Parallelogram)q; //向下转型操作
        }
        //判断父类对象是否为Square子类的一个实例
        if(q instanceof Square) {
            Square s = (Square)q;   //进行向下转型操作
        }
        //由于q对象不WieAnything类的对象,所以这条语句是错误的
//      System.out.println(q instanceof Anything);
    }
}

你可能感兴趣的:(使用instanceof操作符判断对象类型)