次のことが許可されていない理由がわかりません。
public interface MyInterface {
MyInterface getInstance(String name);
}
public class MyImplementation implements MyInterface {
public MyImplementation(String name) {
}
@Override
public static MyInterface getInstance(String name) { // static is not allowed here
return new MyImplementation(name)
}
}
インターフェイスのメソッドを静的にできない理由は理解していますが、オーバーライドするメソッドを静的にできないのはなぜですか?
すべてのクラスにメソッドを実装してもらいたいのgetInstance(String name)
ですが、現在のところ、オブジェクトがすでにインスタンス化されている場合にのみメソッドを呼び出すことができるように制限されています。
*更新:*回答ありがとうございます。今ではよく理解できました。基本的に、ユーティリティクラス(またはファクトリクラス)にインターフェイスを実装させようとすべきではありません(少なくとも、この方法ではありません)...