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);
这个"新"在返回什么时做了什么?这个方法是返回并调用私有构造函数吗?
问题1:它根本不是构造函数,它只是一个创建对象的静态方法.
问题2:new用于在类上调用构造函数.new A(...)调用A传递参数的构造函数.
所以你所拥有的A是一个无法以正常方式实例化的类(因为构造函数是私有的),但是你可以通过调用来获取实例A.parse.parse在这种情况下,通常称为"工厂"方法.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |