1
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); 何かを返すとき、この「新しい」は何をしますか?このメソッドはプライベートコンストラクターを返し、呼び出していますか?

4

2 に答える 2

5

質問1:これはコンストラクターではなく、オブジェクトを作成する静的メソッドにすぎません。

質問2:newクラスのコンストラクターを呼び出すために使用されます。引数を渡すコンストラクターをnew A(...)呼び出します。A

したがって、そこにあるAのは、通常の方法ではインスタンス化できないクラスですが(コンストラクターがプライベートであるため)、そこから。を呼び出すことでインスタンスを取得できますA.parseparseこの場合、通常は「ファクトリ」メソッドと呼ばれます。

于 2012-12-01T08:09:54.813 に答える
2

コンストラクターではありません。これは静的な方法です。また、その戻りタイプはAであるため、Aを返します。

return new A(result);

と同等です

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

プライベートコンストラクターを呼び出します。これにより、Aの新しいインスタンスを作成し、この新しいインスタンスを返します。

あなたが持っているものは典型的なファクトリメソッドです。Integer.valueOf(String)たとえば、のように。

于 2012-12-01T08:11:31.537 に答える