抱歉,如果标题措辞不好,请随时编辑。
让我们假设一个主类,它从类 A 创建一个对象,其构造函数从类 B 接收一个对象作为参数。一种编码方法是:
B b = new B(); A a = new A(b);
但是现在,假设我想以另一种方式对其进行编码,以免保留对 B 对象的引用(使其匿名),如下所示:
A a = new A(new B());
它会产生以下哪个 UML 序列图?
换句话说,B 对象是由 Main 类创建还是由 A 的构造函数创建?
抱歉,如果标题措辞不好,请随时编辑。
让我们假设一个主类,它从类 A 创建一个对象,其构造函数从类 B 接收一个对象作为参数。一种编码方法是:
B b = new B(); A a = new A(b);
但是现在,假设我想以另一种方式对其进行编码,以免保留对 B 对象的引用(使其匿名),如下所示:
A a = new A(new B());
它会产生以下哪个 UML 序列图?
换句话说,B 对象是由 Main 类创建还是由 A 的构造函数创建?
你的第一个选项是正确的。内部对象B
是在main
. 现在A
已创建并且(匿名)B
对象作为参数传递。
第二个选项意味着它B
是在内部创建A
的,但事实并非如此。
我用调试器运行了一个简单的程序来观察新的 B 对象何时被创建。它是在调用 a 的构造函数之前创建的。因此,主类正在创建它,然后将其传递给构造函数以创建一个。
A类:
public class A()
{
public A(B b)
{
//constructor stuff
}
}
B类:
public class B()
{
public B()
{
//constructor stuff
}
}
主要的
public class App()
{
public static void main(String[] args)
{
A a = new A(new B());
}
}