菜单

使用 instanceof 检查 Java 变量的类型

目录

检查变量类型

下面是一个用 Java 检查变量类型的示例程序。

由于 Java 是一种静态类型语言,类型是显式声明的,因此没有机会在这种程度上检查类型。不过,在使用继承对象时,可能有必要进行类型检查。

如何检查 Java 中的类型 实例 使用运算符,您可以使用 if 语句等评估类和接口,如下所示。

多变的 类的实例

多变的 接口实例

实例 的右侧可以指定类名或接口名。实例 返回值是一个布尔值;如果为 true,则变量是指定的类或接口。

聊天&信使 是一款集商务聊天、网络会议、文件共享、日程管理、文档管理、会议室预订、考勤管理于一体的组件,简单易用。为企业提供完善的安全保护,免费提供!

示例程序

首先是最简单的模式。如果变量 i 是整数,则返回 true,否则返回 false。

示例代码

public static void integerSample() {
    Integer i = 100;
    boolean result = i instanceof Integer;
    System.out.println(result);
}

输出(结果)

true

变量 i 是一个整数,因此结果为 true。不过,这太明显了,我们无法理解 instanceof 的作用,所以我们再把它复杂化一点。

有效使用实例

instanceof 的一个有效用法是确定变量是哪个子类。

示例代码

示例代码中,我们创建了一个动物类Animal、一个继承于Animal类的Dog类、以及一个Cat类,创建实例后,我们在play方法中设置了一个变量。 实例 控制台输出根据判断进行分支。

class Animal {} 
class Dog extends Animal {}
class Cat extends Animal {}

public class Main {
    public static void main(String[] args) {
        instanceofSample();
    }
    
    static void instanceofSample() {
        Animal dog = new Dog();
        play(dog);
        Animal cat = new Cat();
        play(cat);
    }
    
    static void play(Animal animal) {
        if (animal instanceof Dog) {
            System.out.println("お散歩する");
        } else {
            System.out.println("猫じゃらしで遊ぶ");
        }
    }
}

输出(结果)

お散歩する
猫じゃらしで遊ぶ

关键在于,在游戏方法中,作为参数传递的动物是狗还是猫并不可知。

实例 现在,您还可以检查超类(动物)中包含的子类实例(狗或猫),因此您可以像这样使用它。

检查特定接口是否已被实现

您可以检查instanceof所针对的变量是否实现了特定接口。例如,您可以这样使用它。

示例代码

在下面的示例代码中,我们为 Sato 先生和 Suzuki 先生创建类,并实现 Car 接口,假设只有 Suzuki 先生拥有汽车。 goShopping() 方法假设去购物的过程,但它实现了 Car 或基于 instanceof 分支控制台输出。

interface Car {}
class Sato {}
class Suzuki implements Car {}

public class Main {
    public static void main(String[] args) throws Exception {
        instanceofSample();
    }
    
    static void instanceofSample() {
        Sato sato = new Sato();
        goShopping(sato);

        Suzuki suzuki = new Suzuki();
        goShopping(suzuki);
    }
    
    static void goShopping(Object human) {
        if (human instanceof Car) {
            System.out.println("車で行く");
        } else {
            System.out.println("歩いて行く");
        }
    }
}

输出结果:

歩いて行く
車で行く

可以看出,在实施 Car 和不实施 Car 的情况下,流程是不同的。

  • URLをコピーしました!
目录