選單

使用 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 是 Integer,所以結果為 true。然而,這太明顯了,我不知道instanceof是做什麼用的,所以讓我們把它弄得更複雜一些。

有效使用instanceof

instanceof 的一個有效用途是確定變數屬於哪個子類別。

範例程式碼

在範例程式碼中,我們創建了一個動物類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("猫じゃらしで遊ぶ");
        }
    }
}

輸出結果

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

play 方法的關鍵點在於,不清楚作為參數傳遞的動物是狗還是貓。

實例化 現在,您也可以檢查超類別(動物)中包含的子類別實例(狗或貓),因此您可以像這樣使用它。

檢查特定介面是否已實現

您可以檢查instanceof所針對的變數是否實作了特定介面。例如,您可以這樣使用它。

範例程式碼

在下面的範例程式碼中,創建了 Sato 先生和 Suzuki 先生的類,並假設只有 Suzuki 先生擁有汽車,並實現了 Car 介面。 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 是否實現。

  • 網址をコピーしました!
目錄