Obtenha o tipo de objeto em Java

Rupam Yadav 12 outubro 2023
  1. Obtenha o tipo de objeto usando getClass() em Java
  2. Obtenha o tipo de objeto usando instanceOf em Java
  3. Obter o tipo de um objeto de classe criado manualmente em Java
Obtenha o tipo de objeto em Java

Neste artigo, aprenderemos como obter o tipo de objeto em Java. É útil verificar o tipo de objeto quando o objeto vem de uma fonte. É um lugar onde não podemos verificar os tipos de objetos, como de uma API ou uma classe privada a que não temos acesso.

Obtenha o tipo de objeto usando getClass() em Java

No primeiro método, verificamos o tipo de objeto de classes de wrapper como Integer e String. Temos dois objetos, var1 e var2, para verificar o tipo. Usaremos o método getClass() da classe Object, a classe pai de todos os objetos em Java.

Verificamos a classe usando a condição if. Como as classes de wrapper também contêm uma classe de campo que retorna o tipo, podemos verificar qual tipo corresponde a var1 e var2. Abaixo, verificamos ambos os objetos com três 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");
    }
  }
}

Resultado:

var1 is an Integer
var2 is a String

Obtenha o tipo de objeto usando instanceOf em Java

Outro método para obter o tipo de objeto em Java é usando a função instanceOf; ele retorna se a instância do objeto corresponder à classe fornecida. Neste exemplo, temos os objetos var1 e var2 que são verificados com estes três tipos: Integer, String e Double; se qualquer uma das condições atender, podemos executar um código diferente.

Como var1 é do tipo Integer, a condição var1 instanceOf Integer se tornará verdadeira e var2 é Double, portanto, var2 instanceOf Double se tornará verdadeira.

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");
    }
  }
}

Resultado:

var1 is an Integer
var2 is a Double

Obter o tipo de um objeto de classe criado manualmente em Java

Verificamos os tipos de classes de wrapper, mas, neste exemplo, obtemos o tipo de três objetos de três classes criadas manualmente. Criamos três classes: ObjectType2, ObjectType3 e ObjectType4.

ObjectType3 herda ObjectType4 e ObjectType2 herda ObjectType3. Agora queremos saber o tipo de objetos de todas essas classes. Temos três objetos, obj,obj2 e obj3; usamos ambos os métodos que discutimos nos exemplos acima que são getClass() e instanceOf.

No entanto, existem diferenças entre o tipo de obj2. A variável obj2 retornou o tipo ObjectType4 enquanto sua classe é ObjectType3. Isso acontece porque herdamos a classe ObjectType4 no ObjectType3 e o instanceOf verifica todas as classes e subclasses. O obj retornou ObjectType3 porque a função getClass() verifica apenas a classe direta.

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;
  }
}

Resultado:

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

Artigo relacionado - Java Object