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

来源:互联网 发布:java中i和 i的区别 编辑:程序博客网 时间:2024/06/03 15:24

当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成,可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。

instanceof的语法格式如下:
myobject instanceof ExampleClass;

myObject:某类的对象的引用。
ExampleClass:某个类。

使用instanceof操作符的表达式返回值为布尔值,如果返回值为true,说明myobject对象为ExampleClass的实例对象,如果返回值为false,说明myobject对象不是ExampleCLass的实例对象。

例1;在项目中创建parallelogram类和3个内部类Quadrangle、Square、Anything。其中Parallelogram类和Square类继承Quadragle类,在Parallelogram类的主方法中分别创建这些类的对象,然后使用instanceof操作符判断他们的类型并输出结果;

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; // 向下转型操作        }        // 判断父类对象是否为Parallelogram子类的一个实例        if (q instanceof Square) {            Square s = (Square) q; // 进行向下转型操作        }        // 由于q对象不为Anything类的对象,所以这条语句是错误的        // System.out.println(q instanceof Anything);    }}

在主方法中首先创建四边形类对象,然后使用instanceof操作符判断四边形类对象是否为平行四边形类的一个实例,是否为正方形类的一个实例,如果判断结果为true,将进行向下转型操作。

阅读全文
0 0
原创粉丝点击