2017-12-15 6 views
0

Javaクラスを作成するときは、getterメソッドとsetterメソッドを常に実装する必要がありますか?私は、他のクラスがsetterメソッドを介してクラス変数を変更できるようにすることは望ましくない場合があることを理解していますが、それらのメソッドの中で入力検証を実装している限り、JavaクラスでGetterおよびSetterメソッドを実装する場合は常に適切ですか?

getterメソッドとsetterメソッドを含めるのが必ずしも適切でない場合は、具体的に実装する必要がある場合と実装しない場合のガイドラインを示してください。

+1

興味深い読み込みhttps://dev.to/scottshipp/avoid-getters-and-setters-whenever-possible-c8m – StaticBeagle

答えて

3

要するに、固くて速いルールはありません。

フィールドにゲッターを含めるには、他のクラスがそのフィールドにアクセスする必要があると思われる場合があります。それはあなたのクラスの仕事の中に完全に内在し、露出されることを意図していないフィールドのゲッターを持たないことは全く適切です。 getterにフィールド自体ではなく、その一部の変更された形式、またはそれの不変なコピー(たとえば、内部のコピーListフィールド)を返すようにすることも全く適切です。

フィールドを変更するために他のクラスに自由にアクセスできる必要があると思われる場合は、セッターを含めます。基本的に、セッターを省略すると、フィールドは読み取り専用になります。従来のセッターの代わりにフィールドを変更するカスタムメソッドを組み込むこともできます(例:add()ListまたはSetの値を内部に追加する方法など)。すべてのアプローチは、状況に応じて完全に適切です。

EDIT:変更され、「プロパティ」を設立した用語に沿って、「フィールド」に

+0

メモとして、ゲッター/セッターの存在は、*フィールドをフィールドと区別するものです。 – chrylis

1

IMOクラスが不変であれば、あなたがセッターを必要としない

。私はあなたがフィールドを最終的にしている限り、getterがオプションであると考えています。

クラスが変更可能な場合は、ゲッターとセッターの両方が必要です(特に、変更可能なフィールドの場合)。

ここでの回答は、私のように意見/経験に基づいている可能性が高いです。

関連する問題