選單

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 是否已實現。

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