instanceof关键字

发布时间 2023-11-30 18:25:04作者: 皆非6658

image

instanceof用于判断类型

  1. eg:cat instanceof Animal
    判断该对象引用,是否是为该类型(自身类、自身类父类、Object)都是返回true,其他情况返回false

  2. eg: str instanceof String

例子

AnimalParent类

public class AnimalParent {
}

Cat类

public class Cat extends AnimalParent {
}

Dog类

public class Dog extends AnimalParent {
}

测试及运行结果

public class Test01 {
    public static void main(String[] args) {
        AnimalParent cat=new Cat();
        String str="猪猪侠";
        //对象的引用  instanceof  具体的类型(类或者接口)
        //cat instanceof Dog 返回布尔类型 是该类型则返回true  不是则是false
        if(cat instanceof Dog){
            System.out.println("该对象引用是狗类型,可以强转");
            Dog dog=(Dog)cat;
            //强转在编译阶段不报错
            // 在程序运行阶段,可能报错,所以需要这么写
        }else {
            System.out.println("该对象引用不是狗类型,不可以强转");
        }
        //在编译状态下,class可以是object对象的父类,自身类,子类。这三种情况下java编译时不会报错
        if(cat instanceof Cat){
            System.out.println("猫 是我们的猫类型");
        }else {
            System.out.println("猫 不是我们的猫类型");
        }
        if(cat instanceof AnimalParent){
            System.out.println("猫 是我们的动物类型");
        }else {
            System.out.println("猫 不是我们的动物类型");
        }
        /*animalParent 对象 instanceof
        * 判断该对象引用,是否是为该类型(自身类、自身类父类、Object)都是返回true,其他情况返回false
        */
        //也可以判断类型
        if (str instanceof String){
            System.out.println("str是字符串类型");
        }else {
            System.out.println("str不是字符串类型");
        }
    }
}

image