-1
最近このようなものを作成しようとしました。そのインターフェイスを実装するクラスのインスタンスを返す静的メソッドを使ってインターフェイスを作成します。クラスを実装するには専用のコンストラクタがあり、インタフェースはリフレクションによってそのクラスのインスタンスを作成します。ここのサンプルコード:静的メソッドのインタフェースで実装のインスタンスを作成していますか?
static Implementation getImplementation(){
Constructor<Implementation> constructor = Implementation.class.getDeclaredConstructor();
constructor.setAccessible(true);
return constructor.newInstance();
}
私は例外処理をしません。 このコードは何らかの目的のために有効ですか、それとも恐ろしい反パターンですか?
インターフェイスを実装に不必要に結び付けているようです。なぜ、 'Implementation'クラスに' createInstance'を入れないのですか? –
まあ、私はこれがインターフェイスを使用し、Impl impl = new Impl()のようなインプリメンテーションのインスタンスを作成しないように他の人に強制することを覚えていました。なぜなら、クラスを実装するコンストラクタはプライベートなものだからです(まあ、リフレクションしない限り)。 – Pitris