La classe Array est une classe non-instanciable qui exporte les méthodes de classe pour créer des tableaux Java avec des primitives ou des types de composants de classes.

La classe Array possède deux méthodes destinées à créer des tableaux avec un type d'élément associé. Les méthodes créent un tableau en spécifiant pour l'une, une longueur et pour l'autre, des dimensions.

Object tab = Array.newInstance(Class.forName("java.lang.String"), 20);

int[] dimensions = {10, 10, 3};
Object tabDims = Array.newInstance(Char.TYPE, dimensions);

Les méthodes de la classe Array sont aussi utilisées pour obtenir et fixer les valeurs des éléments d'un tableau.Les méthodes d'obtention et d'affectation sont préfixées respectivement par get et set. A chaque type primitif correspond une méthode, ainsi pour les valeurs de type double, il existe une méthode getDouble() et une autre setDouble().

Un autre couple de méthodes permet d'extraire ou de fixer une valeur de type Object, il s'agît de get() et set().

Array.set(tab, 0, "Une chaîne...");

System.out.println(Array.get(tab, 0).toString());

Dans le cas de tableaux dynamiques à plusieurs dimensions, la première dimension est accessible via l'identificateur du tableau et les autres par l'intermédiaire de d'une imbrication de méthodes get().

int taille1 = Array.getLength(tabDims);
int taille2 = Array.getLength(Array.get(tabDims, 0));
int taille3 = Array.getLength(Array.get(Array.get(tabDims, 0), 0));

La méthode getLength() retourne une valeur entière indiquant la taille d'un tableau ou de l'une de ses dimensions.

Il est nécessaire d'importer la classe java.lang.reflect.Array afin de pouvoir utiliser ses membres dans un programme.

Exemple [voir]
import java.lang.reflect.Array;

public class Introspection {
    public static void main(String[] args) {
      try{
      Object tableau = Array.newInstance(Integer.TYPE, 10);
      int[] dimensions = {2, 10};
      Object tableau2 = Array.newInstance(Double.TYPE, dimensions);
      System.out.println(Array.getLength(tableau));
      System.out.println(Array.getLength(Array.get(tableau2, 0)));
      System.out.println("Premier tableau :");
      for(int i = 0; i < Array.getLength(tableau); i++){
        Array.setInt(tableau, i, 100 * i);
      }
      for(int i = 0; i < Array.getLength(tableau); i++){
        System.out.println(Array.getInt(tableau, i));
        Array.setDouble(Array.get(tableau2, 0), i, Array.getInt(tableau, i));
      }
      System.out.println("Second tableau :");
      for(int i = 0; i < Array.getLength(tableau2); i++){
        System.out.println(Array.get(tableau2, i).toString());
        for(int j = 0; j < Array.getLength(Array.get(tableau2, i)); j++){
          if (i == 0)
            Array.setDouble(Array.get(tableau2, 1), j, 
              (j > 0 ? (Math.PI / Array.getDouble(Array.get(tableau2, i), j)) : 0));
          System.out.println(Array.getDouble(Array.get(tableau2, i), j));
        }
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}