如果您有两个类 Boo 和 Foo ,并且 Foo 的每个实例都包含 Boo 的实例,您可以在 Foo 的构造函数中包含 Boo 中的私有属性 Setter 吗?
答案 0 :(得分: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");
}
}
你问这个问题的事实表明你认为可能会出错< - 你有什么特别的想法?
答案 1 :(得分:1)
更好的答案是自己尝试一下。
在这种情况下测试和查看结果并不难。
如果不这样做,你还能学会如何编程吗?
答案 2 :(得分:0)
是的,你可以。我看不出任何问题。
编辑:
取消注释您的代码。你的getter / setter就好了。
答案 3 :(得分: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
对象作为新Student
的一部分,因此最适合进行初始化对象所需的任何调用。
但是,我不明白为什么你更喜欢这个来调用Name
的构造函数。更少的线条,整个事情要么成功要么不成功。