メソッドチェーン
下記のようなクラスがあったとします。
インスタンス化の際に引数で設定します。
ここで引数が多いと記載が煩雑ですね。
そこでまずItemクラスでSetterを用意します。
右クリックから「ソース」>「getterおよびsetterの生成」をクリックします。
「すべて選択」ボタンの押下後、「生成」ボタンを押下します。
Setterを生成することが出来ました。
Setterに値を設定する方法は下記の通りです。
しかし、この方法だと「item」を繰り返し記載する必要があり、まだ煩雑さがあります。
そこでメソッドチェインを利用します。
メソッドチェインを利用するためにまずItemクラスを修正します。
上記「get〜」を削除して自クラス(Item)を返却するように変更しました。※Getterは見やすさのために削除しました。
すると、インスタンス化の際に下記のように記載することが出来ます。
例えば今回の例のItemクラスをDB等に保存したいとします。
その場合、下記のようなsaveメソッドを作ると思います。今回はコンソールに「save」と出力するだけにします。
呼び出し元は下記の通りになります。
ラムダ式
ここからラムダ式を使用して上記のようなプログラムを実装していきます。
saveメソッドの戻り値を「void」に変更します。
また、引数に「Consumer」型を用意します。(Itemクラスを指定します)
「Consumer」型の変数から「accept」メソッドを呼び出し、空のItemクラスのインスタンスを渡します。
saveメソッドを上記のように変更することで呼び出し先で次のようにラムダ式に変更することが出来ます。
Itemのsaveメソッドはstaticなのでインスタンス化しなくても使えます。
saveメソッドの中で新しいインスタンスが作られます。
このインスタンスに対して実装します。
コメント