私はすでに「自然な」順序を持っているクラスを持っており、同様に使用できる別のコンパレータを定義したいと考えています。String.CASE_INSENSITIVE_ORDER
つまり、必要なときに参照されるインスタンス化された静的フィールドとして定義します。
実際の比較タイプであるインターフェースFoo(そうなるでしょうComparator<Foo>
)では、FooImplではなくそこに配置することに賛成です(この特定のケースでは、違いが生じる場合は1つの実装のみ)。Fooはインターフェイスであるため、もちろんクラスがパブリックである必要があることを除いて、Stringクラスと同様の内部クラスを使用して実装されます。
FooではなくFooImplに入れる方がよいかどうか疑問に思います。もしそうなら、なぜですか?また、実装クラスの公開の可視性については気にしませんが、代わりにスタンドアロンの個別のパッケージの可視エンティティである必要がありますか?