Abrufen des Objekttyps in Java

Rupam Yadav 12 Oktober 2023
  1. Holen Sie sich den Objekttyp mit getClass() in Java
  2. Holen Sie sich den Objekttyp mit instanceOf in Java
  3. Abrufen des Typs eines manuell erstellten Klassenobjekts in Java
Abrufen des Objekttyps in Java

In diesem Artikel erfahren Sie, wie Sie den Objekttyp in Java ermitteln. Es ist hilfreich, den Objekttyp zu überprüfen, wenn das Objekt aus einer Quelle stammt. Es ist ein Ort, an dem wir den Objekttyp nicht überprüfen können, z. B. von einer API oder einer privaten Klasse, auf die wir keinen Zugriff haben.

Holen Sie sich den Objekttyp mit getClass() in Java

In der ersten Methode prüfen wir den Objekttyp von Wrapperklassen wie Integer und String. Wir haben zwei Objekte, var1 und var2, um den Typ zu überprüfen. Wir verwenden die Methode getClass() der Klasse Object, der Elternklasse aller Objekte in Java.

Wir überprüfen die Klasse mit der if-Bedingung. Da die Wrapper-Klassen auch eine Feldklasse enthalten, die den Typ zurückgibt, können wir prüfen, welcher Typ mit var1 und var2 übereinstimmt. Im Folgenden überprüfen wir beide Objekte mit drei Typen.

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

Ausgabe:

var1 is an Integer
var2 is a String

Holen Sie sich den Objekttyp mit instanceOf in Java

Eine andere Methode zum Abrufen des Objekttyps in Java ist die Verwendung der Funktion instanceOf; es wird zurückgegeben, wenn die Instanz des Objekts mit der angegebenen Klasse übereinstimmt. In diesem Beispiel haben wir die Objekte var1 und var2, die mit diesen drei Typen geprüft werden: Integer, String und Double; Wenn eine der Bedingungen erfüllt ist, können wir einen anderen Code ausführen.

Da var1 vom Typ Integer ist, wird die Bedingung var1 instanceOf Integer wahr und var2 ist Double, also wird var2 instanceOf Double wahr.

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

Ausgabe:

var1 is an Integer
var2 is a Double

Abrufen des Typs eines manuell erstellten Klassenobjekts in Java

Wir haben die Typen der Wrapper-Klassen überprüft, aber in diesem Beispiel erhalten wir den Typ von drei Objekten von drei manuell erstellten Klassen. Wir erstellen drei Klassen: ObjectType2, ObjectType3 und ObjectType4.

ObjectType3 erbt ObjectType4 und ObjectType2 erbt ObjectType3. Nun wollen wir den Objekttyp all dieser Klassen kennen. Wir haben drei Objekte, obj, obj2 und obj3; wir verwenden beide Methoden, die wir in den obigen Beispielen besprochen haben, nämlich getClass() und instanceOf.

Allerdings gibt es Unterschiede zwischen der Art von obj2. Die Variable obj2 hat den Typ ObjectType4 zurückgegeben, während ihre Klasse ObjectType3 ist. Es passiert, weil wir die Klasse ObjectType4 in ObjectType3 erben und instanceOf alle Klassen und Unterklassen überprüft. Das obj gab ObjectType3 zurück, weil die Funktion getClass() nur die direkte Klasse prüft.

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

Ausgabe:

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

Verwandter Artikel - Java Object