Java 创建成员变量的实例

Java 创建成员变量的实例,java,instance-variables,Java,Instance Variables,嗨,这是一个基本的问题,但请容忍我 我有两门课,课上有另一门课的参考资料。如何创建在创建第一个类的实例时第一个类中存在的第二个类的实例。是否有任何实用程序可用于此 代码:: class A { B b; } class B { int member; } 在第一类的构造函数中: class A { public A() { b = new B(); } B b; } 甚至像这样: class A { public A() { } B

嗨,这是一个基本的问题,但请容忍我

我有两门课,课上有另一门课的参考资料。如何创建在创建第一个类的实例时第一个类中存在的第二个类的实例。是否有任何实用程序可用于此

代码::

class A  {
  B b;
}

class B {
 int member;
}

在第一类的构造函数中:

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

  B b;

}
甚至像这样:

class A 
{
  public A()
  {
  }

  B b = new B();

}

一般的解决办法是:

public class A {

    private final B b;

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

...

A a = new A(new B());
当两个实例都相互引用时,会变得很有趣,然后您需要在至少一个类中使用setter:

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);
类创建另一个实例本身的答案不是一般的解决方案

  • 在一个承包商(就像罗伯特·科克已经说过的)
  • 直接作为属性
  • 带初始值设定项

  • 等效地,只需将声明更改为
    bb=newb()。如果A不应该负责创建B的实例怎么办?@AdriaanKoster,那么它可能不应该在其构造函数中创建它们。但这就是问题的目的。感谢所有精彩的答案,但这是一个简单的场景,对我来说,类a有n个其他类的引用,而这些类本身包含n个其他类的引用。例如:A类{classa1a1;classa2a2;…classAn An;}感谢所有精彩的答案,但这是一个简单的场景,对我来说,A类有n个其他类的引用,而这些类本身包含n个其他类的引用。所以你是说你的问题不是你的问题?如果这些答案对你没有帮助,那么你真正的问题是什么?
    
    class A  {
      B b;
    
      public A(){
        b = new B();
        b.member = 5;
      }
    }
    
    class A  {
      B b = new B(5);  
    }
    
    class A  {
      B b;
      {
        b = new B();
        b.member = 5;
      }
    }