Obtenir le type d'objet en Java

Rupam Yadav 12 octobre 2023
  1. Obtenir le type d’objet à l’aide de getClass() en Java
  2. Obtenir le type d’objet en utilisant instanceOf en Java
  3. Obtenir le type d’un objet de classe créé manuellement en Java
Obtenir le type d'objet en Java

Dans cet article, nous allons apprendre comment obtenir le type d’objet en Java. Il est utile de vérifier le type d’objet lorsque l’objet provient d’une source. C’est un endroit où nous ne pouvons pas vérifier le type d’objets, comme à partir d’une API ou d’une classe privée à laquelle nous n’avons pas accès.

Obtenir le type d’objet à l’aide de getClass() en Java

Dans la première méthode, nous vérifions le type d’objet des classes wrapper comme Integer et String. Nous avons deux objets, var1 et var2, pour vérifier le type. Nous utiliserons la méthode getClass() de la classe Object, la classe parente de tous les objets en Java.

Nous vérifions la classe en utilisant la condition if. Comme les classes wrapper contiennent également une classe de champ qui renvoie le type, nous pouvons vérifier dont le type correspond à var1 et var2. Ci-dessous, nous vérifions les deux objets avec trois types.

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

Production:

var1 is an Integer
var2 is a String

Obtenir le type d’objet en utilisant instanceOf en Java

Une autre méthode pour obtenir le type d’objet en Java consiste à utiliser la fonction instanceOf ; il renvoie si l’instance de l’objet correspond à la classe donnée. Dans cet exemple, nous avons les objets var1 et var2 qui sont cochés avec ces trois types : Integer, String et Double ; si l’une des conditions est remplie, nous pouvons exécuter un code différent.

Parce que var1 est de type Integer, la condition var1 instanceOf Integer deviendra vraie, et var2 est Double donc, var2 instanceOf Double deviendra vraie.

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

Production:

var1 is an Integer
var2 is a Double

Obtenir le type d’un objet de classe créé manuellement en Java

Nous avons vérifié les types de classes wrapper, mais dans cet exemple, nous obtenons le type de trois objets de trois classes créées manuellement. Nous créons trois classes : ObjectType2, ObjectType3 et ObjectType4.

ObjectType3 hérite de ObjectType4 et ObjectType2 hérite de ObjectType3. Maintenant, nous voulons connaître le type d’objets de toutes ces classes. Nous avons trois objets, obj, obj2 et obj3 ; nous utilisons les deux méthodes décrites dans les exemples ci-dessus, à savoir getClass() et instanceOf.

Cependant, il existe des différences entre le type de obj2. La variable obj2 a renvoyé le type ObjectType4 alors que sa classe est ObjectType3. Cela arrive parce que nous héritons de la classe ObjectType4 dans le ObjectType3 et que instanceOf vérifie toutes les classes et sous-classes. Le obj a renvoyé ObjectType3 car la fonction getClass() ne vérifie que la classe directe.

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

Production:

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

Article connexe - Java Object