2 votes

Création d'une instance de variables membres

Bonjour, il s'agit d'une question de base, mais je vous prie de m'écouter.

J'ai deux classes et une classe a une référence d'une autre classe. Comment puis-je créer l'instance de la deuxième classe qui est présente dans la première classe au moment de la création de l'instance de la première classe. Existe-t-il des utilitaires pour cela ?

Code : :

class A  {
  B b;
}

class B {
 int member;
}

2voto

Asriel Points 61
  1. Dans un Contructeur (comme Robert Kock l'a déjà dit)

    class A { B b;

    public A(){ b = new B(); b.member = 5; } }

  2. Directement en tant qu'attribut

    class A { B b = new B(5);
    }

  3. Avec initialisateur

    class A { B b; { b = new B(); b.member = 5; } }

1voto

Robert Kock Points 3317

Dans le constructeur de la première classe :

class A 
{
  public A()
  {
    b = new B();
  }

  B b;

}

Ou même comme ça :

class A 
{
  public A()
  {
  }

  B b = new B();

}

1voto

Adriaan Koster Points 6264

Une solution générale serait :

public class A {

    private final B b;

    public A(B b) {
        this.b = b;
    }    
}

...

A a = new A(new B());

Cela devient intéressant lorsque les deux instances font référence l'une à l'autre, il faut alors utiliser un setter dans au moins une des classes :

public class B {

    private A a; // the field cannot be final in this case

    public void setA(A a) {
        this.a = a;
    }    
}

....

B b = new B()
A a = new A(b);
b.setA(a);

Les réponses où la classe crée elle-même l'autre instance ne sont pas une solution générale.

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