Décodage des informations sur le type de classe en Java
Souvent, nous rencontrons des chaînes comme "[Ljava.lang.Object;" lorsque vous travaillez avec des types de classe en Java. Comprendre comment décoder cet encodage est crucial pour identifier le type réel d'un objet.
Cet encodage suit un schéma de dénomination spécifique documenté dans Class.getName(). Lorsqu'un objet classe représente un type tableau, son nom est constitué du nom de son type d'élément précédé de crochets "[". Par exemple, "[Ljava.lang.Object;" représente Object[], qui est un tableau d'objets.
Le tableau suivant résume l'encodage des types d'éléments courants :
Element Type | Encoding |
---|---|
boolean | Z |
byte | B |
char | C |
double | D |
float | F |
int | I |
long | J |
short | S |
Class or interface | Lclassname; |
Les tableaux ne remplacent pas la méthode toString() héritée d'Object , qui renvoie une chaîne au format :
getClass().getName() + '@' + Integer.toHexString(hashCode())
C'est pourquoi toString() des tableaux renvoie une chaîne dans le format spécifique que nous rencontrons, y compris les crochets du tableau et l'encodage du nom de classe.
Bien qu'il soit déconseillé de s'appuyer sur toString() pour décoder les types de tableaux, Java propose des méthodes alternatives pour obtenir des informations sur les types. L'appel de getClass() sur un objet renvoie un objet Class qui peut être utilisé à des fins de réflexion. De plus, java.util.Arrays propose des surcharges de toString() pour les tableaux primitifs et Object[], ce qui facilite l'obtention d'une représentation lisible par l'homme du contenu du tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!