I Need some clarification how below code work in java.
I have interface call TaskDataProvider.
public interface TaskDataProvider {
String getTaskName();
}
Also there is class TaskExecutor which need TaskDataProvider
public class TaskExecutor {
private TaskDataProvider taskDataProvider;
public TaskExecutor(TaskDataProvider taskDataProvider) {
this.taskDataProvider = taskDataProvider;
}
public void execute() {
System.out.println(taskDataProvider.getTaskName());
}
}
FirstTask which crate TaskDataProvider and it contain TaskExecutor which create inside FirstTask Interface.
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";
}
}
Now When we create FirstTask, we refer "this" to refer same FirstTask instance when creating TaskExecutor. But when the time use "this" its not fully completed FirstTask instance creation. ("this" refer inside constructor). I feel this flow as we are referring incomplete instance via "this"
But this is working fine. I need to know how this work fine. and it cannot be exception on any time in this process.
So please help me to understand this. Thanks.