Obtener tipo de objeto en Java

Rupam Yadav 12 octubre 2023
  1. Obtener el tipo de objeto usando getClass() en Java
  2. Obtener el tipo de objeto usando instanceOf en Java
  3. Obtener el tipo de un objeto de clase creado manualmente en Java
Obtener tipo de objeto en Java

En este artículo, aprenderemos cómo obtener el tipo de objeto en Java. Es útil verificar el tipo de objeto cuando el objeto proviene de una fuente. Es un lugar donde no podemos verificar el tipo de objetos, como desde una API o una clase privada a la que no tenemos acceso.

Obtener el tipo de objeto usando getClass() en Java

En el primer método, verificamos el tipo de objeto de las clases contenedoras como Integer y String. Tenemos dos objetos, var1 y var2, para comprobar el tipo. Usaremos el método getClass() de la clase Object, la clase padre de todos los objetos en Java.

Comprobamos la clase usando la condición if. Como las clases contenedoras también contienen una clase de campo que devuelve el tipo, podemos comprobar qué tipo coincide con var1 y var2. A continuación, verificamos ambos objetos con tres tipos.

public class ObjectType {
  public static void main(String[] args) {
    Object var1 = Integer.valueOf("15");
    Object var2 = String.valueOf(var1);

    if (var1.getClass() == Integer.class) {
      System.out.println("var1 is an Integer");
    } else if (var1.getClass() == String.class) {
      System.out.println("var1 is a String");
    } else if (var1.getClass() == Double.class) {
      System.out.println("var1 is a Double");
    }

    if (var2.getClass() == Integer.class) {
      System.out.println("var2 is an Integer");
    } else if (var2.getClass() == String.class) {
      System.out.println("var2 is a String");
    } else if (var2.getClass() == Double.class) {
      System.out.println("var2 is a Double");
    }
  }
}

Producción :

var1 is an Integer
var2 is a String

Obtener el tipo de objeto usando instanceOf en Java

Otro método para obtener el tipo de objeto en Java es mediante la función instanceOf; devuelve si la instancia del objeto coincide con la clase dada. En este ejemplo, tenemos los objetos var1 y var2 que se comprueban con estos tres tipos: Integer, String y Double; si se cumple alguna de las condiciones, podemos ejecutar un código diferente.

Como var1 es de tipo Integer, la condición var1 instanceOf Integer se convertirá en verdadera, y var2 es Double, por lo que var2 instanceOf Double se convertirá en verdadera.

public class ObjectType {
  public static void main(String[] args) {
    Object var1 = Integer.valueOf("15");
    Object var2 = Double.valueOf("10");

    if (var1 instanceof Integer) {
      System.out.println("var1 is an Integer");
    } else if (var1 instanceof String) {
      System.out.println("var1 is a String");
    } else if (var1 instanceof Double) {
      System.out.println("var1 is a Double");
    }

    if (var2 instanceof Integer) {
      System.out.println("var2 is an Integer");
    } else if (var2 instanceof String) {
      System.out.println("var2 is a String");
    } else if (var2 instanceof Double) {
      System.out.println("var2 is a Double");
    }
  }
}

Producción :

var1 is an Integer
var2 is a Double

Obtener el tipo de un objeto de clase creado manualmente en Java

Verificamos los tipos de clases contenedoras, pero en este ejemplo, obtenemos el tipo de tres objetos de tres clases creadas manualmente. Creamos tres clases: ObjectType2, ObjectType3 y ObjectType4.

ObjectType3 hereda ObjectType4 y ObjectType2 hereda ObjectType3. Ahora queremos saber el tipo de objetos de todas estas clases. Tenemos tres objetos, obj,obj2 y obj3; usamos los dos métodos que discutimos en los ejemplos anteriores que son getClass() y instanceOf.

Sin embargo, existen diferencias entre el tipo de obj2. La variable obj2 devolvió el tipo ObjectType4 mientras que su clase es ObjectType3. Sucede porque heredamos la clase ObjectType4 en el ObjectType3 y el instanceOf comprueba todas las clases y subclases. El obj devolvió ObjectType3 porque la función getClass() comprueba sólo la clase directa.

public class ObjectType {
  public static void main(String[] args) {
    Object obj = new ObjectType2();
    Object obj2 = new ObjectType3();
    Object obj3 = new ObjectType4();

    if (obj.getClass() == ObjectType4.class) {
      System.out.println("obj is of type ObjectType4");
    } else if (obj.getClass() == ObjectType3.class) {
      System.out.println("obj is of type ObjectType3");
    } else if (obj.getClass() == ObjectType2.class) {
      System.out.println("obj is of type ObjectType2");
    }

    if (obj2 instanceof ObjectType4) {
      System.out.println("obj2 is an instance of ObjectType4");
    } else if (obj2 instanceof ObjectType3) {
      System.out.println("obj2 is an instance of ObjectType3");
    } else if (obj2 instanceof ObjectType2) {
      System.out.println("obj2 is an instance of ObjectType2");
    }

    if (obj3 instanceof ObjectType4) {
      System.out.println("obj3 is an instance of ObjectType4");
    } else if (obj3 instanceof ObjectType3) {
      System.out.println("obj3 is an instance of ObjectType3");
    } else if (obj3 instanceof ObjectType2) {
      System.out.println("obj3 is an instance of ObjectType2");
    }
  }
}

class ObjectType2 extends ObjectType3 {
  int getAValue3() {
    System.out.println(getAValue2());
    a = 300;
    return a;
  }
}

class ObjectType3 extends ObjectType4 {
  int getAValue2() {
    System.out.println(getAValue1());
    a = 200;
    return a;
  }
}

class ObjectType4 {
  int a = 50;

  int getAValue1() {
    a = 100;
    return a;
  }
}

Producción :

obj is of type ObjectType2
obj2 is an instance of ObjectType4
obj3 is an instance of ObjectType4
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Object