web-dev-qa-db-fra.com

Existe-t-il un moyen de sortir le type de données Java sur la console?

J'essaie de déboguer un programme dont j'ai hérité. Ce programme contient des chaînes, des listes et des collections de tableaux, beaucoup de transtypages entre les types, et j'ai besoin de faire quelques manipulations de chaînes (substring, etc.)

Les données look comme des chaînes lorsqu'elles sont imprimées sur la console (par exemple, c'est une ligne de texte, comme Johnson, John ou Chicago Region), mais mon code contient des erreurs avec divers index out of range erreurs, suggérant que mon code à convertir en chaîne ne fonctionne pas.

Je voudrais essayer de comprendre quels types de données entrent et sortent de mes méthodes pour vérifier que le programme fonctionne comme prévu. Existe-t-il un moyen de trouver un type de champ en Java? Dans un monde parfait, je pourrais générer une sortie console à chaque étape qui me donnerait la valeur des données et qu'il s'agisse d'une chaîne, d'une liste de tableaux ou d'une collection. Cela peut-il être fait?

29
dwwilson66

Étant donné une instance de n'importe quel objet, vous pouvez appeler sa méthode getClass () pour obtenir une instance de l'objet Class qui décrit le type de l'objet.

En utilisant l'objet Class, vous pouvez facilement imprimer son nom de type:

Integer number=Integer.valueOf(15);
System.out.println(number.getClass().getName());

Cette impression pour consoler le nom complet de la classe, qui est par exemple:

Java.lang.Integer

Si vous voulez une sortie plus concise, vous pouvez utiliser à la place:

Integer number=Integer.valueOf(15);
System.out.println(number.getClass().getSimpleName());

getSimpleName () ne vous donne que le nom de la classe:

Integer

L'impression du type de variables primitives est un peu plus complexe: voir this SO question pour plus de détails.

50
Andrea Parodi

Pour tout objet x, vous pouvez imprimer x.getClass().

6
Keith Randall

Faites simplement .class.getName(); dans n'importe quel objet

0
Ismael Abreu

instance.getClass() est la voie à suivre si vous souhaitez simplement imprimer le type. Vous pouvez également utiliser instanceof si vous souhaitez dériver le comportement en fonction du type, par exemple.

if ( x instanceof String )
{
   // handle string
}
0
Martin

Utilisez la méthode getClass().

Object o;
System.out.println(o.getClass());
0
eabraham