MENÚ

Verifique el tipo de una variable Java con instancia de

Tabla de contenido

Verificar tipo de variable

Presentamos un programa de muestra para verificar el tipo de una variable en Java.

Java es un lenguaje de tipo estático que declara tipos explícitamente, por lo que no hay oportunidad de verificar tanto los tipos. Sin embargo, la verificación de tipos puede ser necesaria cuando se utilizan objetos heredados.

Cómo comprobar tipos en Java en vez de Usando operadores, puede evaluar clases e interfaces con declaraciones if, etc., como se muestra a continuación.

variable instancia de clase

variable instancia de interfaz

en vez de Se puede especificar un nombre de clase o de interfaz en el lado derecho de .en vez de El valor de retorno es booleano; si es verdadero, la variable es la clase o interfaz especificada.

Chat y mensajería es un software colaborativo que integra chat empresarial, conferencias web, intercambio de archivos, gestión de horarios, gestión de documentos, reserva de salas de conferencias y gestión de asistencia de una manera fácil de usar. Seguridad perfecta para empresas,¡Disponible gratis!

programa de muestra

Comencemos con el patrón más simple. Devuelve verdadero si la variable i es un número entero; falso en caso contrario.

Código de muestra

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

Resultado de salida

true

La variable i es un número entero, por lo que el resultado es verdadero. Sin embargo, esto es demasiado obvio y no sé para qué sirve la instancia de, así que hagámoslo un poco más complicado.

Uso efectivo de instancia de

Un uso eficaz de instancia de es determinar a qué clase secundaria pertenece una variable.

Código de muestra

En el código de muestra, creamos una clase animal Animal, una clase Perro que hereda de la clase animal y una clase Cat. Después de crear una instancia, configuramos una variable en el método de juego. en vez de La salida de la consola se bifurca según el criterio.

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

Resultado de salida

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

El punto clave del método de juego es que no está claro si el animal utilizado como argumento es un perro o un gato.

en vez de Ahora, también puedes verificar las instancias de subclase (Perro o Gato) contenidas dentro de la superclase (Animal), para poder usarla así.

Comprobar si se implementa una interfaz en particular

Puede comprobar si se implementa una interfaz específica para la variable objetivo de instancia de. Por ejemplo, puedes usarlo así.

Código de muestra

En el código de muestra siguiente, creamos clases para el Sr. Sato y el Sr. Suzuki, e implementamos la interfaz Car, asumiendo que solo el Sr. Suzuki posee un automóvil. El método goShopping() asume el proceso de ir de compras, pero implementa Car o ramifica la salida de la consola según la instancia de.

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

Resultado de salida:

歩いて行く
車で行く

Puede ver que el procesamiento se ramifica dependiendo de si Car está implementado o no.

  • URLをコピーしました!
Tabla de contenido