3

static メソッドMは、 interface を実装するオブジェクトを返しますA

interface A { ... }
static A M() { ... }

内でM、型のオブジェクトを構築し、Bそれを返したいと思いBますA

class B implements A { ... }

B私はクライアントコードがどのように実装されているかについて何も知りたくありません。クラスにならないようにしたい思います。外部メソッドのインスタンス化を絶対に防ぎたいです(1人のユーザーがコメントしたように、リフレクションを除く)。BstaticB BBM

上記を達成するにはどうすればよいですか?どこにどのように実装すればよいBですか? 短いコード例を教えてください。

私の主な問題は、どうすれば「異なる」を持つことができるかということBです。

4

3 に答える 3

4

おそらく、静的内部クラスが最善の策です。Bリフレクションを使用すると、クライアントコードはすべてのアクセス修飾子をバイパスできるため、「すべてのコストでのインスタンス化を防ぐ」ことはできません。

于 2012-08-04T23:10:43.277 に答える