菜单

Java 変数の型を instanceof で確認する

目录

检查变量类型。

本示例程序演示了如何在 Java 中检查变量的类型。

Java 是一种静态类型语言,类型是显式声明的,因此很少需要检查类型。但是,在使用继承对象时,类型检查就变得必要了。

如何在 Java 中检查类型 instanceof 您可以使用运算符,通过 if 语句来评估类和接口,如下所示:

多变的 instanceof クラス

多变的 instanceof インターフェース

instanceof 您可以在右侧指定类名或接口名。instanceof 返回值是一个布尔值,如果为真,则该变量为指定的类或接口。

聊天和即时通讯 这是一款用户友好、集成度高的群件,集商务聊天、网络会议、文件共享、日程管理、文档管理、会议室预订和考勤管理于一体,并为企业提供强大的安全保障。免费使用!

示例程序

我们先从最简单的模式开始。如果变量 i 是一个整数,则返回 true;否则,返回 false。

示例代码

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

输出结果

true

変数 i は Integer なので、結果は true になります。しかし、これでは当たり前すぎて instanceof がなんのためにあるか分かないので、もう少し複雑にします。

instanceof の効果的な使い方

instanceof の効果的な使い方の一つに、その変数がどの子クラスなのかを判定する場合があります。

示例代码

示例代码创建了一个名为 Animal 的动物类,以及两个继承自 Animal 类的类 Dog 和 Cat。创建实例后,使用 `play` 方法定义变量。 instanceof 系统会判断这一点,并据此对控制台输出进行分支处理。

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("猫じゃらしで遊ぶ");
        }
    }
}

输出结果

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

关键在于,在“play”方法中,无法知道作为参数传递的“animal”是狗还是猫。

instanceof 因此,由于我们还可以检查超类(动物)中包含的子类(狗或猫)的实例,我们也可以用这种方式使用它。

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

instanceof の対象となる変数に、ある特定のインターフェースが実装されているか確認できます。例えばこのような使い方ができます。

示例代码

次のサンプルコードでは、佐藤さん、鈴木さんクラスを作成し、鈴木さんだけが車を持っている想定で、インターフェース Car を implements しています。goShopping() メソッドは買い物に行く処理を仮定していますが、Car を implements しているか、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 是否已实现。

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