| Les structures complexes | 
Java ne possede pas de notion de structures et d'unions.
Le langage considere les tableaux comme des objets a part entiere, c'est a dire qu'en tableau doit etre dynamiquement cree comme un objet. Le nombre d'elements d'un tableau est donne par la methode length (declaree public final) naturellement liee a cet objet.
Programme :
| public class tab { int[] tab_int ; ma_classe[][] tab_ma_classe ; // constructeur tab() { tab_int = new int[10] ; System.out.println("Longeur de tab_int : " + tab_int.length()) ; tab_ma_classe = new ma_classe[5][5] ; // reste a faire un new sur chaque objet } } class ma_classe { final int CONSTANTE=0 ; char variable ; } | 
Question : Java ne disposant ni des pointeurs, ni des structures,
comment implanter par exemple une liste chainee ?
En fait, la notion de pointeur n'est pas totalement absente du langage. On n'y a simplement pas acces directement, mais on peut l'utiliser de facon transparente comme l'exemple suivant le montre :
| public class liste { static cellule tete, nouvelle ; static void ajout(cellule cell) { cell.suiv = tete ; tete = cell ; } static void parcourir(cellule debut) { while (debut != null) { System.out.println("Cellule numero " + debut.valeur) ; debut = debut.suiv ; } } public static void main(String[] args) { int i ; tete=null ; for (i=0 ; i<10 ; i++) { nouvelle = new cellule() ; nouvelle.valeur = i ; nouvelle.suiv = null ; ajout(nouvelle) ; } parcourir (tete) ; } } class cellule { int valeur ; cellule suiv ; } | 
Ce programme ressemble beaucoup a ce que nous aurions pu ecrire en C a ceci pres qu'en C nous aurions du definir explicitement des structures et des pointeurs.
Resultat de l'execution :
| Cellule numero 9 Cellule numero 8 Cellule numero 7 Cellule numero 6 Cellule numero 5 Cellule numero 4 Cellule numero 3 Cellule numero 2 Cellule numero 1 Cellule numero 0 | 
Ph. RIS 1997