java:这个方法返回的是什么?

hib*_*ibc 1 java

public class A extends B {
    private A(B b) {
        super(b);
    }

    public static A parse(string s) // question 1
    {
        B result = D.parse(s);

        return new A(result); // question 2
    }

}
Run Code Online (Sandbox Code Playgroud)

问题1:我不明白这是什么类型的构造函数(?).我对常规构造函数的看法类似public A().但是这一个:

public static A parse(string s)
Run Code Online (Sandbox Code Playgroud)

我该如何解读?

问题2: new A(result); 这个"新"在返回什么时做了什么?这个方法是返回并调用私有构造函数吗?

T.J*_*der 5

问题1:它根本不是构造函数,它只是一个创建对象的静态方法.

问题2:new用于在类上调用构造函数.new A(...)调用A传递参数的构造函数.

所以你所拥有的A是一个无法以正常方式实例化的类(因为构造函数是私有的),但是你可以通过调用获取实例A.parse.parse在这种情况下,通常称为"工厂"方法.