私は効果的なJavaテキストブックを読んでいました。最初の項目は、パブリック コンストラクターの代わりに静的ファクトリ メソッドを使用することです。私の疑問は、私が指定している場合、Interface
どのように静的ファクトリメソッドを指定できますInterface
か? Java は 内の静的メソッドをサポートしていないためinterface
です。テキスト ブックでは、public static factory メソッドを含むインスタンス化不可能なクラスの作成について指定されています。しかし、これらのメソッドはどのようにして実装クラスのプライベート コンストラクターにアクセスできるのでしょうか?
テキストブックには、を定義している場合Interface Type
、インスタンス化できないクラスを作成しTypes
、そのクラスに静的ファクトリメソッドを含めると書かれています。しかし、クラスで定義されたメソッドは、どのようTypes
にして具体的な実装のプライベート コンストラクターにアクセスできますか?Interface Type
編集: - 以下の文は教科書から引用されています。その意味を説明してください
「インターフェイスは静的メソッドを持つことができないため、慣例により、 Typeという名前のインターフェイスの静的ファクトリ メソッドは、Typesという名前のインスタンス化できないクラス (項目 4) に配置されます」
編集:- Joshua Bloch による効果的な Java から取得: Item1 - 静的ファクトリ メソッド
public interface Foo{ //interface without plural 's' (question 1)
public void bar();
}
public abstract class Foos(){ // abstract factory with plural 's' (question 1)
public static Foo createFoo(){
return new MyFoo();
}
private class MyFoo implements Foo{ // a non visible implementation (question 2)
public void bar(){}
}
}
私の質問は、静的メソッドがどのようcreateFoo()
にしてプライベートコンストラクターを呼び出すことができるかということですMyFoo