gpt4 book ai didi

java - 有什么方法可以在构造函数中初始化需要 "this"作为参数的对象吗?

转载 作者:行者123 更新时间:2023-12-01 16:00:17 25 4
gpt4 key购买 nike

我在 Java 中遇到了这个问题,但我猜这是一个关于 OOP 的问题。这应该是一个非常常见的需求,所以我希望有一个我不知道的解决方案。

当您需要在构造函数中初始化对象的字段,但这些对象需要 this 作为参数时,您该怎么办?

所以这是你不能做的:

public class SomeClass {
private SomeOtherClass foo;
public SomeClass (SomeOtherClass foo) {
this.foo = foo;
}
}

public class SomeOtherClass {
private SomeClass bar;
public SomeOtherClass() {
bar = new SomeClass(this);
}
}

我不知道任何解决方案,除了有一个 init() 方法来完成所有对象初始化,并在我的主程序中初始化 SomeOtherClass 对象后调用它。有没有更好的办法?或者有没有办法让 SomeOtherClass 的方法(init() 方法)在构造函数完成后运行,而不需要显式调用它?

谢谢!

最佳答案

可以做您所展示的事情。为什么你认为它不起作用?

唯一的限制是将 this 传递给父类(super class)构造函数(这是一种罕见的诱惑)。例如,您不能这样做:

public class SomeSubclass extends SomeSuperclass {
public SomeSubclass() {
super(this); /* ERROR: Can't pass `this` to super-ctor. */
}
}

关于java - 有什么方法可以在构造函数中初始化需要 "this"作为参数的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com