Ottieni il tipo di oggetto in Java

Rupam Yadav 12 ottobre 2023
  1. Ottieni il tipo di oggetto usando getClass() in Java
  2. Ottieni il tipo di oggetto usando instanceOf in Java
  3. Ottieni il tipo di un oggetto classe creato manualmente in Java
Ottieni il tipo di oggetto in Java

In questo articolo impareremo come ottenere il tipo di oggetto in Java. È utile controllare il tipo di oggetto quando l’oggetto proviene da un’origine. È un luogo in cui non possiamo verificare il tipo di oggetti, ad esempio da un’API o da una classe privata a cui non abbiamo accesso.

Ottieni il tipo di oggetto usando getClass() in Java

Nel primo metodo, controlliamo il tipo di Object delle classi wrapper come Integer e String. Abbiamo due oggetti, var1 e var2, per controllare il tipo. Useremo il metodo getClass() della classe Object, la classe genitore di tutti gli oggetti in Java.

Controlliamo la classe usando la condizione if. Poiché le classi wrapper contengono anche una classe di campo che restituisce il tipo, possiamo verificare quale tipo corrisponde a var1 e var2. Di seguito, controlliamo entrambi gli oggetti con tre tipi.

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

Produzione:

var1 is an Integer
var2 is a String

Ottieni il tipo di oggetto usando instanceOf in Java

Un altro metodo per ottenere il tipo di oggetto in Java è utilizzare la funzione instanceOf; restituisce se l’istanza dell’oggetto corrisponde alla classe data. In questo esempio abbiamo gli oggetti var1 e var2 che vengono controllati con questi tre tipi: Integer, String e Double; se una qualsiasi delle condizioni soddisfa, possiamo eseguire un codice diverso.

Poiché var1 è di tipo Integer, la condizione var1 instanceOf Integer diventerà vera e var2 è Double, quindi var2 instanceOf Double diventerà vera.

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

Produzione:

var1 is an Integer
var2 is a Double

Ottieni il tipo di un oggetto classe creato manualmente in Java

Abbiamo controllato i tipi di classi wrapper, ma in questo esempio otteniamo il tipo di tre oggetti di tre classi create manualmente. Creiamo tre classi: ObjectType2, ObjectType3 e ObjectType4.

ObjectType3 eredita ObjectType4 e ObjectType2 eredita ObjectType3. Ora vogliamo conoscere il tipo di oggetti di tutte queste classi. Abbiamo tre oggetti, obj, obj2 e obj3; usiamo entrambi i metodi discussi negli esempi precedenti che sono getClass() e instanceOf.

Tuttavia, ci sono differenze tra il tipo di obj2. La variabile obj2 ha restituito il tipo ObjectType4 mentre la sua classe è ObjectType3. Succede perché ereditiamo la classe ObjectType4 in ObjectType3 e instanceOf controlla tutte le classi e sottoclassi. L’obj ha restituito ObjectType3 perché la funzione getClass() controlla solo la classe diretta.

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

Produzione:

obj is of type ObjectType2
obj2 is an instance of ObjectType4
obj3 is an instance of ObjectType4
Autore: Rupam Yadav
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

Articolo correlato - Java Object