1 2 3 4 5 6 7 8 9 10 11
| if (size == array.length) { // si size == 0 (donc) ce qui est vrai au début (size=0 n'est-ce-pas au premier appel)
int newCapacity = 2 * size; // newCapacity = 2 * 0, donc 0
Object[] newArray = new Object[newCapacity]; // donc newArray = new Object[0]
for (int i = 0; i < size; i++) // là, on fait rien puisque size = 0
newArray[i] = array[i]; // donc on ne fait jamais ça
array = newArray; // donc array est un Object[0], de taille 0 donc
}
array[size++] = obj ; // size = 0, donc c'est comme si on faisait array[0] = obj, or le array.length==0, donc array[0] n'existe pas, donc erreur de dépassement d'indexde tableau (ce que signifie litéralement ArrayIndexOutOfBounds - d'aileurs le nombre 0 qu'on voit derrière c'est l'index (0 donc) qu'on a essayé d'accèder est qui était en dehors des limites du tableau) |