gpt4 book ai didi

java - 在实例完全创建之前(在同一构造函数内)使用 "this"关键字引用同一实例时,java 如何解析引用

转载 作者:行者123 更新时间:2023-12-02 01:52:34 26 4
gpt4 key购买 nike

我需要一些说明,下面的代码如何在 java 中工作。

我有接口(interface)调用TaskDataProvider。

    public interface TaskDataProvider {
String getTaskName();
}

还有一个类 TaskExecutor 需要 TaskDataProvider

    public class TaskExecutor {
private TaskDataProvider taskDataProvider;

public TaskExecutor(TaskDataProvider taskDataProvider) {
this.taskDataProvider = taskDataProvider;
}

public void execute() {
System.out.println(taskDataProvider.getTaskName());
}
}

FirstTask 包含 TaskDataProvider,它包含在 FirstTask 接口(interface)内创建的 TaskExecutor。

    public class FirstTask implements TaskDataProvider {

private TaskExecutor taskExecutor;

public FirstTask() {
this.taskExecutor = new TaskExecutor(this);
}

public TaskExecutor getTaskExecutor() {
return taskExecutor;
}

@Override
public String getTaskName() {
return "First Task";
}
}

现在,当我们创建 FirstTask 时,我们在创建 TaskExecutor 时引用“this”来引用相同的 FirstTask 实例。但是当使用“this”时,它还没有完全完成 FirstTask 实例的创建。 (“this”指的是构造函数内部)。我感觉到这个流程,因为我们通过“this”引用不完整的实例

但是这工作正常。我需要知道这是如何正常工作的。在这个过程中任何时候都不能异常(exception)。

所以请帮助我理解这一点。谢谢。

最佳答案

在调用构造函数之前创建一个对象。否则,构造函数无法通过 this 访问它。

您可以在这里找到类和对象实例化的非常详细的分析:Java order of Initialization and Instantiation

关于java - 在实例完全创建之前(在同一构造函数内)使用 "this"关键字引用同一实例时,java 如何解析引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52773290/

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