Maison >Java >javaDidacticiel >Pourquoi Java empêche-t-il l'affectation de tableaux non initialisés avec des accolades ?

Pourquoi Java empêche-t-il l'affectation de tableaux non initialisés avec des accolades ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 10:16:11421parcourir

Why Does Java Prevent Uninitialized Array Assignment with Curly Braces?

Syntaxe d'affectation de tableau non initialisée

Java permet une initialisation concise des tableaux dans les déclarations :

AClass[] array = {object1, object2};

Cependant, en essayant attribuer un tableau non initialisé avec des accolades entraîne un compilateur erreur :

AClass[] array;
...
array = {object1, object2}; // Error

Raison de la restriction

La raison spécifique de cette restriction n'est pas claire. Cela peut être dû à des complexités grammaticales ou au désir de maintenir la cohérence dans la syntaxe de Java.

Solution de contournement

Bien que ce ne soit pas aussi concis, vous pouvez initialiser un tableau non initialisé avec le nouveau opérateur puis attribuez explicitement les éléments :

AClass[] array;
...
array = new AClass[2];
...
array[0] = object1;
array[1] = object2;

Simplifié Exemple

L'utilisation de cette solution de contournement dans l'extrait de code fourni simplifie la logique d'initialisation du tableau :

public void selectedPointsToMove(cpVect coord) {

    if (tab == null) {
        if (arePointsClose(coord, point1, 10))
            tab = new cpVect[]{point1};
        else if (arePointsClose(point2, coord, 10))
            tab = new cpVect[]{point2};
        else
            tab = new cpVect[]{point1, point2};
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn