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 :

  • les types primitifs de champs,
  • les types primitifs des paramètres d'un constructeur et méthode,
  • le type primitif de retour d'une méthode.

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 :

ClassePrimitive
java.lang.Boolean.TYPEboolean
java.lang.Character.TYPEchar
java.lang.Byte.TYPEbyte
java.lang.Short.TYPEshort
java.lang.Integer.TYPEint
java.lang.Long.TYPElong
java.lang.Float.TYPEfloat
java.lang.Double.TYPEdouble
java.lang.Void.TYPEvoid

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();
    }
}