Créer un tableau d'objets en Java


Answers

C'est correct. Vous pouvez aussi faire:

A[] a = new A[] { new A("args"), new A("other args"), .. };
Question

Je suis nouveau à Java et pour le moment créé un tableau d'objets en Java.

J'ai une classe A par exemple -

A[] arr = new A[4];

Mais ceci crée seulement des pointeurs (références) à A et non 4 objets. Est-ce correct? Je vois que lorsque j'essaie d'accéder à des fonctions / variables dans les objets créés, j'obtiens une exception de pointeur nul. Pour pouvoir manipuler / accéder aux objets je devais 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 bizarre.

EDIT: Je trouve ça bizarre car en C ++ vous venez de dire new A [4] et il crée les quatre objets.




Voici un exemple clair de création d'un tableau de 10 objets employés, avec un constructeur qui prend paramètre:

public class MainClass
{  
    public static void main(String args[])
    {
        System.out.println("Hello, World!");
        //step1 : first create array of 10 elements that holds object addresses.
        Emp[] employees = new Emp[10];
        //step2 : now create objects in a loop.
        for(int i=0; i<employees.length; i++){
            employees[i] = new Emp(i+1);//this will call constructor.
        }
    }
}

class Emp{
    int eno;
    public Emp(int no){
        eno = no;
        System.out.println("emp constructor called..eno is.."+eno);
    }
}



Oui, il est correct dans Java il y a plusieurs étapes pour faire un tableau d'objets:

  1. Déclaration puis instanciation (Créer une mémoire pour stocker les objets '4'):

    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 des 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);