如果您有两个类Boo和Foo ,并且Foo的每个 Instance 都包含一个Boo的实例,那么您可以在Foo的构造函数中包含Boo的私有属性的Setter吗?
问问题
3224 次
4 回答
1
是的,一点没错。为什么你不能?
class Boo {
private String name;
public void setName(String name) {
this.name = name;
}
}
class Foo {
private final Boo boo;
public Foo() {
boo = new Boo();
boo.setName("boo");
}
}
您提出这个问题的事实表明您认为可能会出错 - 您特别想到了什么?
于 2012-08-05T12:54:50.670 回答
1
更好的答案是自己尝试一下。
在这种情况下,测试和查看结果并不难。
如果不这样做,您还能如何学习编程?
于 2012-08-05T12:56:02.540 回答
0
我在您的新代码中看到的问题在这里:
this.name = new Name();
Name.setFirstName(firstName);
Name.setLastName(lastName);
Name
是一个类名。为了Name.setFirstName()
成为有效的调用,setFirstName()
必须是Name
. 大概它是一个实例方法。您需要为该类的特定实例调用它,在本例中是this.name
. 所以正确的代码是:
this.name = new Name();
this.name.setFirstName(firstName);
this.name.setLastName(lastName);
回到你最初的问题——我的猜测是,你得到的不要从构造函数调用 setter 的建议是基于“构造函数不应该有副作用”的想法。在这种情况下,您正在构建一个全新的Name
对象作为 new 的一部分Student
,因此进行初始化对象所需的任何调用都是非常合适的。
但是,我不明白为什么你更喜欢这个而不是调用Name
构造函数。更少的行,整个事情要么成功,要么不成功。
于 2012-08-05T13:23:26.923 回答
0
是的你可以。我看不出有什么问题。
编辑:
取消注释您的代码。你的 getter/setter 很好。
于 2012-08-05T12:55:29.157 回答