この質問は、Javaでネストされたクラスを静的なネストされたクラスにするか、内部のネストされたクラスにするかです。私はこことStack Overflowを検索しましたが、この決定の設計への影響に関する質問は本当に見つかりませんでした。
私が見つけた質問は、静的なクラスと内部のネストされたクラスの違いについて尋ねていることです。ただし、Javaで静的にネストされたクラスを使用する説得力のある理由はまだ見つかりませんでした。匿名クラスを除き、この質問では考慮していません。
静的なネストされたクラスを使用した場合の影響についての私の理解は次のとおりです。
- 結合の減少:クラスは外部クラスの属性に直接アクセスできないため、一般的に結合が減少します。一般に、結合が少ないということは、コードの品質の向上、テストの容易化、リファクタリングなどを意味します。
- シングル
Class
:クラスローダーは毎回新しいクラスを処理する必要はなく、外側のクラスのオブジェクトを作成します。同じクラスの新しいオブジェクトを何度も取得するだけです。
内部クラスの場合、一般に、人々は外部クラスの属性へのアクセスをプロと考えることがわかります。この直接アクセスは高いカップリングを意味し、ネストされたクラスを別のトップレベルクラスに抽出したい場合は、本質的に向きを変えた後にのみ行うことができるため、デザインの観点からこの点で異なるようにお願いします静的なネストされたクラスに入れます。
したがって、私の質問はこれに帰着します:非静的内部クラスに利用可能な属性アクセスが高い結合につながり、したがってコード品質が低下すると仮定するのは間違っていますか、これから(非匿名)ネストされたクラスが一般的に静的ですか?
または言い換えると:ネストされた内部クラスを好む理由は納得できますか?