长期运行的构造函数是否会创建半初始化对象?

adg*_*gfs 2 java constructor initialization

我有一个类"A",它读取XML文件并进行一些处理.我在构造函数中添加了一个方法"load",但我想知道如果XML文件大小很大并且需要时间加载会发生什么.

class A
{
    public String fileName;

    A(String fileName)
    {
        this.fileName = fileName;
        load();
    }

    private load()
    {
        //here i load some xml file by given file name;
    }

    public searchByTag(String sometag)
    {
        //some search
    }

    public extractData()
    {
        //extract some data
    }
}  
Run Code Online (Sandbox Code Playgroud)

例如,如果我们有以下情况:

A a = new A("somefile");
a.searchByTag("tag");
a.extractData();
Run Code Online (Sandbox Code Playgroud)

对象"a"是在加载文件后创建的,对吧?

Sim*_*nni 10

是的,执行该段代码的线程将在返回A实例之前通过所有负载.

从技术上讲,对象"a"是在加载之前创建的(内部加载可以安全地引用它),但只有在构造函数返回时才将其赋值给变量"a",这意味着它在完成执行时也会加载( ) 方法.