Bonjour,
je voudrais savoir comment tester la classe d'un objet null?
Quand un objet n'est pas null :
monObjet instanceof maClasse
mais par convention instanceof renvoit false si monObjet est null..
merci d'avance
Version imprimable
Bonjour,
je voudrais savoir comment tester la classe d'un objet null?
Quand un objet n'est pas null :
monObjet instanceof maClasse
mais par convention instanceof renvoit false si monObjet est null..
merci d'avance
sans vouloir dire une bêtise (ça m'arrive :zoubi:)... tant que tu n'as pas réellement créé l'objet (avec "new"), ton programme ne peut pas savoir si l'objet sera de la classe de base, ou d'une classe héritée.
InstanceOf, comme son nom l'indique, concerne l'instance (l'objet), elle doit donc être créée. Si tu veux connaître la classe de la variable pointant vers l'instance, il faut chercher autre chose (typeof ?).
Salut,
Je crois qu'il faudrait préciser ce que tu cherches à faire, déterminer le contexte, il y'a sûrement un moyen de le réaliser autrement que comme tu le demandes (ce qui n'est pas possible à mon avis).
++
C'est exactement une sorte de typeof que je veux...
Si ton objet est à null, c'est tout simplement IMPOSSIBLE.
Le seul truc possible que je vois, c'est de créer ta propre table de correspondance et donc d'enregistrer dedans toutes les variables que tu crées.
genre:
HashMap<Object, Class<?>> register....
Et du coup après, tu te fais une méthode utilitaire qui appelle register.get(variable) et tu testes avec la classe obtenue....
Ca reste très crade....
ok :'(
je vais faire quelquechose dans ce genre.
merci
Un objet null est juste un pointeur vers \0. Il est unique et ne peut pas changer. Donc un objet null n'a pas de type.
Si ce que tu cherches à savoir, c'est ça :
Ce n'est tout simplement pas possible comme ça.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void test(Object obj) { System.out.println( /* type déclaré de o bj*/ ); } public void testPrincipal() { String s = null; test(s); Object o = null; test(o); Date d = null; test(d); Integer i = null; test(i); }
Essaie peut-être ceci alors :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public <T> void test(T obj, Class<T> type) { System.out.println( obj == null ? type : obj.getClass() ); } public void testPrincipal() { String s = null; test(s, String.class); Object o = null; test(o, Object.class); Date d = null; test(d, Date.class); Integer i = null; test(i, Integer.class); }