Comment vérifier le type de variable en Java?

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? Y a-t-il une fonction pour faire cela?

Java est un langage de type statique, le compilateur effectue donc la majeure partie de cette vérification pour vous. Une fois que vous déclarez une variable comme étant un certain type, le compilateur s’assurera que seules les valeurs de ce type sont affectées (ou les valeurs qui sont des sous-types de ce type).

Les exemples que vous avez donnés (int, array, double) sont tous des primitives, et il n’y en a pas de sous-types. Ainsi, si vous déclarez une variable comme étant un int :

 int x; 

Vous pouvez être sûr qu’il ne tiendra jamais que des valeurs int .

Si vous avez déclaré une variable comme une List , il est toutefois possible que la variable contienne des sous-types de List . Des exemples de ceux-ci incluent ArrayList , LinkedList , etc.

Si vous aviez une variable List et que vous deviez savoir s’il s’agissait d’une ArrayList , vous pouvez procéder comme suit:

 List y; ... if (y instanceof ArrayList) { ...its and ArrayList... } 

Cependant, si vous pensez que vous devez le faire, vous pouvez repenser votre approche. Dans la plupart des cas, si vous suivez des principes orientés object, vous ne devrez pas le faire. Il y a bien sûr des exceptions à toutes les règles.

En fait, il est très facile de lancer votre propre testeur en abusant de la capacité de surcharge de la méthode Java. Bien que je sois toujours 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"); } } 

puis:

 Typetester t = new Typetester(); t.printType( yourVariable ); 

a.getClass().getName() – vous donnera le type de données de l’object réel auquel se réfère a , mais pas le type de données que la variable a été initialement déclarée ou vers laquelle elle a été convertie.

boolean b = a instanceof Ssortingng – vous indiquera si l’object réel auquel fait référence a est une instance d’une classe spécifique. Encore une fois, le type de données que la variable a a été initialement déclarée ou convertie ultérieurement n’a aucune incidence sur le résultat de l’opérateur instanceof.

J’ai pris cette information de: Comment connaissez-vous un type de variable en Java?

Cela peut arriver. J’essaie d’parsingr un Ssortingng dans un int et j’aimerais savoir si mon Integer.parseInt(s.subssortingng(a, b)) un int ou une erreur avant d’essayer de le résumer.

Au fait, cela s’appelle la reflection. Voici quelques informations supplémentaires sur le sujet: http://docs.oracle.com/javase/tutorial/reflect/

Vous pouvez travailler avec Integer au lieu de int, Double au lieu de double, etc. (de telles classes existent pour tous les types primitifs). Vous pouvez ensuite utiliser l’opérateur instanceof, comme if(var instanceof Integer){...}

La première partie de votre question n’a pas de sens. Il n’y a aucune circonstance dans laquelle vous ne connaissez pas le type d’une variable primitive au moment de la compilation.

Dans la seconde partie, la seule circonstance que vous ne sachiez pas déjà si une variable est un tableau est si c’est un object. Dans ce cas, object.getClass().isArray() vous le dira.

Je l’ai fait en utilisant: if(x.getClass() == MyClass.class){...}

Eh bien, je pense que vérifier le type de variable peut être fait de cette façon.

 public  void checkType(T object) { if (object instanceof Integer) System.out.println("Integer "); else if(object instanceof Double) System.out.println("Double "); else if(object instanceof Float) System.out.println("Float : "); else if(object instanceof List) System.out.println("List! "); else if(object instanceof Set) System.out.println("Set! "); } 

De cette façon, vous n’avez pas besoin de plusieurs méthodes surchargées. Je pense que c’est une bonne pratique d’utiliser des collections sur des tableaux en raison des avantages supplémentaires. Cela dit, je ne sais pas comment vérifier un type de tableau. Peut-être que quelqu’un peut améliorer cette solution. J’espère que cela t’aides!

PS Oui, je sais que cela ne vérifie pas non plus les primitives.

Je n’étais satisfait d’aucune de ces réponses, et celle qui est juste n’a pas d’explication et de votes négatifs, j’ai donc cherché tout autour, trouvé des éléments et les ai modifiés pour que ce soit facile à comprendre. Jouez avec elle, pas aussi simple qu’on pourrait l’espérer.

 //move your variable into an Object type Object obj=whatYouAreChecking; System.out.println(obj); // moving the class type into a Class variable Class cls=obj.getClass(); System.out.println(cls); // convert that Class Variable to a neat Ssortingng Ssortingng answer = cls.getSimpleName(); System.out.println(answer); 

Voici une méthode:

 public static void checkClass (Object obj) { Class cls = obj.getClass(); System.out.println("The type of the object is: " + cls.getSimpleName()); } 

Utilisez simplement:

 .getClass().getSimpleName(); 

Exemple:

 SsortingngBuilder randSB = new SsortingngBuilder("just a Ssortingng"); System.out.println(randSB.getClass().getSimpleName()); 

Sortie:

 SsortingngBuilder 

classe publique Demo1 {

 Object printType(Object o) { return o; } public static void main(Ssortingng[] args) { Demo1 d=new Demo1(); Object o1=d.printType('C'); System.out.println(o1.getClass().getSimpleName()); } 

}