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

时间:2012-12-01 08:07:30

标签: 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
    }

}

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

public static A parse(string s)

我该如何解读?

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

它不是构造函数。这是一种静态方法。它的返回类型是A,所以返回A。

return new A(result);

相当于

A temp = new A(result);
return temp;

它调用私有构造函数,它允许创建A的新实例,然后返回这个新实例。

您所拥有的是一种典型的工厂方法。就像Integer.valueOf(String)一样。