Obtenha o tipo de objeto em Java

Rupam Yadav 12 outubro 2023 Java Java Object
  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
Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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