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 pense que nous avons plusieurs solutions :
Pourquoi ? En Java, chaque classe est héritée de la classe Object elle-même. Ainsi, si vous avez une variable et que vous souhaitez connaître son type. Vous pouvez utiliser
ou
ou
isPrimitive()
public static void main(String[] args) {
ClassDemo classOne = new ClassDemo();
Class classOneClass = classOne();
int i = 5;
Class iClass = int.class;
// checking for primitive type
boolean retval1 = classOneClass.isPrimitive();
System.out.println("classOneClass is primitive type? = " + retval1);
// checking for primitive type?
boolean retval2 = iClass.isPrimitive();
System.out.println("iClass is primitive type? = " + retval2);
}
Cela va nous donner :
Pour en savoir plus, cliquez ici : Comment déterminer le type primitif d'une variable primitive ?
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
http://docs.oracle.com/cd/E26806_01/wlp.1034/e14255/com/bea/p13n/expression/operator/Instanceof.html
Je suis d'accord avec Joachim Sauer, il n'est pas possible de savoir (le type de variable ! pas le type de valeur !) à moins que votre variable ne soit un attribut de classe (et vous devriez récupérer les champs de classe, obtenir le bon champ par nom...).
En fait, pour moi, il est tout à fait impossible qu'une quelconque a.xxx().yyy()
vous donne la bonne réponse puisque la réponse serait différente sur le même objet, selon le contexte dans lequel vous appelez cette méthode...
Comme l'a dit teehoo, si vous connaissez à la compilation une liste définie de types à tester, vous pouvez utiliser instanceof mais vous obtiendrez aussi des sous-classes renvoyant true...
Une solution possible consisterait également à s'inspirer de la mise en œuvre de java.lang.reflect.Field
et créez votre propre Field
et déclarez ensuite toutes vos variables locales sous la forme de cette classe personnalisée Field
mais vous devriez trouver une autre solution, je me demande vraiment pourquoi vous avez besoin du type de variable, et pas seulement du type de valeur ?
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).