208 votes

Créer un tableau d'objets en Java

Je suis novice en Java et j'ai créé pour la première fois un tableau d'objets en Java.

J'ai une classe A par exemple -

A[] arr = new A[4];

Mais cela ne fait que créer des pointeurs (références) vers A et non pas 4 objets. Est-ce correct ? Je constate que lorsque j'essaie d'accéder aux fonctions/variables des objets créés, j'obtiens une exception de pointeur nul. Pour pouvoir manipuler/accéder aux objets, j'ai dû faire ceci :

A[] arr = new A[4];
for (int i = 0; i < 4; i++) {
    arr[i] = new A();
}

Est-ce correct ou est-ce que je fais quelque chose de mal ? Si c'est correct, c'est vraiment étrange.

EDIT : Je trouve cela étrange car en C++ on dit simplement new A[4] et il crée les quatre objets.

18 votes

Je voulais juste dire que cette question était exceptionnellement utile ; merci de l'avoir posée.

1voto

Stas S Points 80

La forme générique pour déclarer un nouveau tableau en java est la suivante :

type arrayName[] = new type[numberOfElements];

Où type est un type primitif ou un objet. numberOfElements est le nombre d'éléments que vous allez stocker dans le tableau et cette valeur ne peut pas changer parce que Java ne prend pas en charge les tableaux dynamiques (si vous avez besoin d'une structure flexible et dynamique pour contenir des objets, vous pouvez utiliser certaines des collections Java).

Initialisons un tableau pour stocker les salaires de tous les employés d'une petite entreprise de 5 personnes :

int salaries[] = new int[5];

Le type du tableau (dans ce cas int ) s'applique à toutes les valeurs du tableau. Vous ne pouvez pas mélanger les types dans un même tableau.

Maintenant que nous avons initialisé notre tableau de salaires, nous voulons y mettre quelques valeurs. Nous pouvons le faire soit pendant l'initialisation comme ceci :

int salaries[] = {50000, 75340, 110500, 98270, 39400};

Ou de le faire à un moment ultérieur comme celui-ci :

salaries[0] = 50000;
salaries[1] = 75340;
salaries[2] = 110500;
salaries[3] = 98270;
salaries[4] = 39400;

Un exemple plus visuel de la création d'un tableau : enter image description here

Pour en savoir plus sur les matrices, consultez le guide .

0voto

Jeremy Levett Points 273

Oui, c'est exact, en Java, il y a plusieurs étapes pour créer un tableau d'objets :

  1. Déclarer et ensuite instancier (créer une mémoire pour stocker 4 objets) :

    A[ ] arr = new A[4];
  2. Initialisation des objets (Dans ce cas vous pouvez initialiser 4 objets de la classe A)

    arr[0] = new A();
    arr[1] = new A();
    arr[2] = new A();
    arr[3] = new A();

    ou

    for( int i=0; i<4; i++ )
      arr[i] = new A();

Vous pouvez maintenant commencer à appeler les méthodes existantes à partir des objets que vous venez de créer, etc.

Par exemple :

  int x = arr[1].getNumber();

ou

  arr[1].setNumber(x);

0voto

SzymonB Points 21

Pour une classe générique, il est nécessaire de créer une classe enveloppe. Par exemple :

Set<String>[] sets = new HashSet<>[10]

résulte en : "Impossible de créer un tableau générique"

A utiliser à la place :

        class SetOfS{public Set<String> set = new HashSet<>();}
        SetOfS[] sets = new SetOfS[10];

0 votes

Cette ligne signifie-t-elle que vous essayez de créer un tableau d'ensembles, où le type d'ensemble est String ?

-15voto

kusal manuja Points 3
class kkkk {
  public static void main(String args[]){
    A[] arr = new A[4];
    for( int i=0; i<4; i++ ){
      arr[i] = new A();
      System.out.prin(i);
    }
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X