Il existe neuf objets Class qui sont utilisées pour représenter les huit types primitifs auxquels s'ajoute le mot-clé void au moment du temps d'exécution.
Il faut noter que ces objets sont des instances de type Class et non des classes. L'API d'introspection central (Core Reflection API) utilise ces objets afin d'identifier :
La JVM (Java Virtual Machine) crée ces neufs objets Class qui ont les mêmes noms que les types qu'ils représentent. Les objets Class peuvent seulement être référencés par le truchement des variables statiques finales suivantes :
Classe | Primitive |
---|---|
java.lang.Boolean.TYPE | boolean |
java.lang.Character.TYPE | char |
java.lang.Byte.TYPE | byte |
java.lang.Short.TYPE | short |
java.lang.Integer.TYPE | int |
java.lang.Long.TYPE | long |
java.lang.Float.TYPE | float |
java.lang.Double.TYPE | double |
java.lang.Void.TYPE | void |
En particulier, ces objets Class ne sont pas accessibles par l'intermédiaire de la méthode Class.forname().
Exemple [voir]public class Introspection { public static void main(String[] args) { try { int[][][] tab = new int[10][2][20]; String sType = tab.getClass().getName(); if (sType.indexOf('[') > -1) { int nbDimensions = 0; while (sType.charAt(nbDimensions) == '[') nbDimensions++; switch(sType.charAt(nbDimensions)) { case 'B' : System.out.print("byte"); break; case 'C' : System.out.print("char"); break; case 'D' : System.out.print("double"); break; case 'F' : System.out.print("float"); break; case 'I' : System.out.print("int"); break; case 'J' : System.out.print("long"); break; case 'L' : System.out.print(sType.substring(nbDimensions + 1, sType.indexOf(";"))); break; case 'S' : System.out.print("short"); break; case 'Z' : System.out.print("boolean"); break; } for(int i = 1; i <= nbDimensions; i++){ System.out.print("[]"); } System.out.println(";"); } } catch (Exception e) { e.printStackTrace(); } } |