Comment puis-je vérifier que ma variable est un int, un tableau, un double, etc... ?
Edit : Par exemple, comment puis-je vérifier qu'une variable est un tableau ? Existe-t-il une fonction pour le faire ?
Comment puis-je vérifier que ma variable est un int, un tableau, un double, etc... ?
Edit : Par exemple, comment puis-je vérifier qu'une variable est un tableau ? Existe-t-il une fonction pour le faire ?
Java étant un langage à typage statique, le compilateur effectue la plupart de ces vérifications pour vous. Dès que vous déclarez qu'une variable est d'un certain type, le compilateur s'assure que seules des valeurs de ce type (ou des valeurs qui sont des sous-types de ce type) lui sont attribuées.
Les exemples que vous avez donnés (int, array, double) sont tous des primitives, et il n'en existe pas de sous-types. Ainsi, si vous déclarez qu'une variable est un int
:
int x;
Vous pouvez être sûr qu'il ne contiendra jamais que int
valeurs.
Si vous avez déclaré une variable comme étant un List
Cependant, il est possible que la variable contienne des sous-types de List
. En voici quelques exemples ArrayList
, LinkedList
etc.
Si vous aviez un List
et vous aviez besoin de savoir s'il s'agissait d'une ArrayList
vous pouvez faire ce qui suit :
List y;
...
if (y instanceof ArrayList) {
...its and ArrayList...
}
Toutefois, si vous vous dites que vous devez le faire, vous devriez peut-être revoir votre approche. Dans la plupart des cas, si vous suivez les principes de l'orientation objet, vous n'aurez pas besoin de le faire. Il y a, bien sûr, des exceptions à toutes les règles.
En fait, il est assez facile de créer son propre testeur, en abusant de la capacité de surcharge des méthodes de Java. Mais je suis quand même curieux de savoir s'il existe une méthode officielle dans le SDK.
Exemple :
class Typetester {
void printType(byte x) {
System.out.println(x + " is an byte");
}
void printType(int x) {
System.out.println(x + " is an int");
}
void printType(float x) {
System.out.println(x + " is an float");
}
void printType(double x) {
System.out.println(x + " is an double");
}
void printType(char x) {
System.out.println(x + " is an char");
}
}
alors :
Typetester t = new Typetester();
t.printType( yourVariable );
Ce n'est pas une bonne méthode. Que se passe-t-il si je passe un type arbitraire qui n'est pas défini dans votre classe Typetester - dans cet exemple String, par exemple ?
@TashPemhiwa puis ajoutez String et Object aux choix. La créativité et la résolution de problèmes sont les meilleurs atouts des programmeurs.
Cependant, cela ne peut traiter qu'un ensemble fixe de classes prédéfinies (ce qui va à l'encontre du but de l'orientation objet/polymorphisme) et ne donnera que quelque chose comme "classe inconnue" pour les objets de toute autre classe.
a.getClass().getName()
- vous donnera le type de données de l'objet auquel il est fait référence par a
mais pas le type de données que la variable a
a été déclaré à l'origine comme étant ou ultérieurement transformé en.
boolean b = a instanceof String
- vous indiquera si l'objet auquel il est fait référence par a
est une instance d'une classe spécifique. Encore une fois, le type de données que la variable a
a été déclarée à l'origine comme ou a été castée par la suite n'a aucune incidence sur le résultat de l'opérateur instanceof.
J'ai pris cette information de : Comment connaître le type d'une variable en java ?
Cela peut arriver. J'essaie d'analyser un String
en un int et j'aimerais savoir si mon Integer.parseInt(s.substring(a, b))
envoie un int ou un déchet avant que j'essaie de le résumer.
Au fait, c'est ce qu'on appelle la réflexion. Voici quelques informations supplémentaires sur le sujet : http://docs.oracle.com/javase/tutorial/reflect/
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.
1 votes
Jetez un coup d'œil à la API de réflexion .
1 votes
Question très proche avec des réponses ici : stackoverflow.com/questions/2674554/ .
0 votes
Cela répond-il à votre question ? Comment connaître le type d'une variable en java ?