Array con virgole finali all’interno di un inizializzatore di array in Java

Gli inizializzatori di array possono essere utilizzati per inizializzare gli array in fase di compilazione. Un inizializzatore con virgole finali come mostrato sotto compila bene.

int a[][] = {{1,2,} ,{3,4,} , {5,6,},}; //Trailing commas cause no compiler error for(int i=0;i<a.length;i++) { for(int j=0;j<2;j++) { System.out.print(a[i][j]+"\t"); } System.out.println(); } 

Produzione :

 1 2 3 4 5 6 

Anche legale con matrici di una dimensione come ovvio con la discussione di cui sopra.

 int[] b = {1, 2, 3, 4, 5, 6,}; //A trailing comma causes no compiler error for(int i=0;i<b.length;i++) { System.out.print(b[i]+"\t"); } 

Produzione :

 1 2 3 4 5 6 

Anche il seguente è una syntax legale e compila bene.

 int c[][] = {{,} ,{,} , {,},}; 

Il compilatore dovrebbe aspettarsi un valore costante (o un altro inizializzatore) dopo e prima di una virgola,. Come viene compilato? Il compilatore semplicemente ignora tali virgole o qualcos’altro accade in tale scenario?

La virgola finale viene ignorata. Dalla specifica Java :

Una virgola finale può apparire dopo l’ultima espressione in un inizializzatore di array e viene ignorata.