Obtenir le type d'objet en Java
-
Obtenir le type d’objet à l’aide de
getClass()
en Java -
Obtenir le type d’objet en utilisant
instanceOf
en Java - Obtenir le type d’un objet de classe créé manuellement 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
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