Supposons que je déclare une variable :
String a = "test";
Et je veux savoir de quel type il s'agit, c'est-à-dire que la sortie doit être java.lang.String
Comment faire ?
Supposons que je déclare une variable :
String a = "test";
Et je veux savoir de quel type il s'agit, c'est-à-dire que la sortie doit être java.lang.String
Comment faire ?
Je me suis dit que c'était ce que l'OP recherchait vraiment puisque la déclaration de a
est assez évident au moment de la compilation
Cela fonctionnerait si les types n'étaient pas des primitives... Si le type est int, comment connaître le type ?
En complément de la réponse de Martin...
Solution Martins
a.getClass().getName()
Solution élargie
Si vous voulez qu'il fonctionne avec n'importe quoi, vous pouvez le faire :
((Object) myVar).getClass().getName()
//OR
((Object) myInt).getClass().getSimpleName()
S'il s'agit d'un type primitif, il sera enveloppé (Autoboxed) dans une variante d'objet correspondante.
Exemple n° 1 (ordinaire)
private static String nameOf(Object o) {
return o.getClass().getSimpleName();
}
Exemple n° 2 (produits génériques)
public static <T> String nameOf(T o) {
return o.getClass().getSimpleName();
}
Apprentissage supplémentaire
Intéressant. Je viens d'essayer votre code sur : System.out.println( ( (Object) Integer.parseInt("12") ).getClass().getSimpleName() ) ; et ça marche ! \o /
Merci beaucoup, avant que la getSimpleName()
J'ai essayé d'utiliser (Stack)(variable.getClass().toString().split(".")).pop()
et cela n'a pas fonctionné, j'ai utilisé la logique JavaScript et je l'ai converti en pile pour sortir le dernier élément après avoir divisé avec .
et cela n'a pas fonctionné.
J'ai appris du moteur de recherche (mon anglais est très mauvais, donc code...) Comment obtenir le type d'une variable ? Up's :
String str = "test";
String type = str.getClass().getName();
value: type = java.lang.String
cette méthode :
str.getClass().getSimpleName();
value:String
exemple maintenant :
Object o = 1;
o.getClass().getSimpleName();
value:Integer
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Êtes-vous vraiment intéressé par la type de la variable ? Ou bien vous intéressez-vous à la type de la valeur ? Parce que le type de la variable ne peut pas être obtenu facilement (en fait, ce n'est pas possible du tout pour les variables locales et nécessite une réflexion pour les champs).
0 votes
@Joachim, quelle est la différence entre "type de la variable" et "type de la valeur" ?
9 votes
@Paul : Considérer
Object o = "o";
- le type de la variable est Object, le type de la valeur est String.2 votes
@Paul In
List<String> l = new ArrayList<String>();
le type de la variable estList<String>
le type de la valeur estArrayList<String>
.1 votes
Le type de variable est java.util.ArrayList et le type de valeur est java.util.ArrayList.
2 votes
@AjayThakur - c'est la différence entre le type à la compilation (statique) et le type à l'exécution (dynamique).