SPEISEKARTE

Prüfen des Typs einer Java-Variablen mit instanceof

Inhaltsverzeichnis

Variablentyp prüfen

Vorstellung eines Beispielprogramms zur Überprüfung des Typs einer Variablen in Java.

Java ist eine statisch typisierte Sprache, die Typen explizit deklariert, sodass es keine Möglichkeit gibt, die Typen so ausführlich zu überprüfen. Bei der Verwendung geerbter Objekte kann jedoch eine Typprüfung erforderlich sein.

So überprüfen Sie Typen in Java Instanz von Mithilfe von Operatoren können Sie Klassen und Schnittstellen mit if-Anweisungen usw. auswerten, wie unten gezeigt.

Variable Instanz der Klasse

Variable Instanz der Schnittstelle

Instanz von Auf der rechten Seite von kann ein Klassenname oder Schnittstellenname angegeben werden.Instanz von Der Rückgabewert ist ein boolescher Wert. Wenn er wahr ist, handelt es sich bei der Variablen um die angegebene Klasse oder Schnittstelle.

Chat&Messenger ist Groupware, die Business-Chat, Webkonferenzen, Dateifreigabe, Terminverwaltung, Dokumentenverwaltung, Konferenzraumreservierung und Anwesenheitsverwaltung auf benutzerfreundliche Weise integriert. Perfekte Sicherheit für Unternehmen,Kostenlos erhältlich!

Beispielprogramm

Beginnen wir mit dem einfachsten Muster. Gibt true zurück, wenn die Variable i eine Ganzzahl ist, andernfalls false.

Beispielcode

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

Ausgabeergebnis

true

Die Variable i ist eine ganze Zahl, daher ist das Ergebnis wahr. Dies ist jedoch zu offensichtlich und ich weiß nicht, wozu die Instanz von dient. Machen wir es also etwas komplizierter.

Effektive Verwendung von Instanzen

Eine effektive Verwendung von „instanceof“ besteht darin, zu bestimmen, zu welcher untergeordneten Klasse eine Variable gehört.

Beispielcode

Im Beispielcode erstellen wir eine Tierklasse Animal, eine Dog-Klasse, die von der Tierklasse erbt, und eine Cat-Klasse und legen nach dem Erstellen einer Instanz Variablen in der Play-Methode fest. Instanz von Die Konsolenausgabe wird basierend auf der Beurteilung verzweigt.

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

Ausgabeergebnis

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

Der entscheidende Punkt bei der Spielmethode besteht darin, dass unklar ist, ob es sich bei dem als Argument übergebenen Tier um einen Hund oder eine Katze handelt.

Instanz von Jetzt können Sie auch die in der Oberklasse (Tier) enthaltenen Unterklasseninstanzen (Hund oder Katze) überprüfen und sie so verwenden.

Überprüfen Sie, ob eine bestimmte Schnittstelle implementiert ist

Sie können überprüfen, ob eine bestimmte Schnittstelle für die Variable implementiert ist, auf die „instanceof“ abzielt. Sie können es beispielsweise so verwenden.

Beispielcode

Im folgenden Beispielcode werden Klassen für Herrn Sato und Herrn Suzuki erstellt und die Schnittstelle „Auto“ unter der Annahme implementiert, dass nur Herr Suzuki ein Auto besitzt. Die Methode goShopping() geht vom Prozess des Einkaufens aus, implementiert jedoch Car oder verzweigt die Konsolenausgabe basierend auf der Instanz von.

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("歩いて行く");
        }
    }
}

Ausgabeergebnis:

歩いて行く
車で行く

Man erkennt, dass sich die Verarbeitung verzweigt, je nachdem, ob Car implementiert ist oder nicht.

  • URLをコピーしました!
Inhaltsverzeichnis