リファクタリング プログラミング Java

【Java】Optionalが処理できないならデフォルト値を返そう

投稿日:

概要

Optionalはnullである可能性を明示的に返してくれる便利なコンテナ・オブジェクトです。
if(obj == null)… といったことをしなくてよくなったのは素晴らしいことだと思っています。

考察内容

nullをOptional型で返してSyetem.out.printすると「Optional.empty」が表示されます。
null安全なのは良いけど、WebアプリケーションのView等に表示するわけにはいかないなぁと感じたのがきっかけです。

対応方法として、Optionalを返すのではなく、nullをデフォルト値等に変換してから返してしまえばいいのではないかというのが考えです。

実装例

商品情報を持つItemオブジェクト(WebアプリケーションだとEntity想定)
  • name、amountは必須項目なので値は必ず保持しており、descriptionはnullである可能性がある状況を想定。
  • descriptionはフィールドとしてはnullを保持するが、アクセサで返す値はデフォルト値として空文字にする。
  • これにより、Entityとしてはnullを持つのでDB値と整合性が取れ、利用側のクラス(ここではMain)はデフォルト値(空文字)を扱うことができる。

 


Optional.empty
[name: BRAVIA, amount: 79000, description: null]
description is

Webアプリケーションなんかで、modelにそのままentityを渡して表示させると、「Optional.empty」が出てしまうので、アクセサ(Getter)でデフォルト値にしてしまうのが、適切かなぁと思った次第です。

まとめ

  • Optionalはnull安全にできる便利なコンテナ・オブジェクトである。
  • 利用側で処理せず、「Optional.empty」となってしまうようであれば、デフォルト値を返してしまうのがよさそう。
  • フィールドで保持する値(null)とアクセサで返す値(空文字)を分けることで、DB値と利用側で表示する値を区別して扱うことも可能になる。

参考

Qiita – Optionalの正しい使い方
Qiita – 【Java】Optionalの正しい使い方を学ぶ
Qiita – Java 8 “Optional” ~ これからのnullとの付き合い方 ~
Qiita – [Java8] Optionalで脱Exception!

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-リファクタリング, プログラミング, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

pageEncodingとcontentTypeのcharsetの違い

pageEncodingとcontentTypeのcharsetは処理されるタイミングが異なります。 それによって文字化けの原因につながっているので、どのように設定すればいいかを解説していきます。 違 …

【Java】ポートフォリオ例(高配当株分析ツール)

概要 ポートフォリオにスクレイピングツールが良いと以前の記事でご紹介しました。 どんなものが作れるのか? ということの具体例として、私が作成したスクレイピングツールを紹介します。 仕様 スクレイピング …

【Bootstrap】一覧表示をデザインしよう!

概要 一覧表示をデザインします。 Bootstrapにはすぐに使える便利なクラスが用意されているので、それらを使用して実現します。 【SpringBootチュートリアル】#7~ 検索画面の作成に変更を …

【SpringBoot入門】#7~ 検索画面の作成

概要 書籍情報を検索するフォーム(検索フォーム)と検索結果を表示する画面(検索結果一覧)を作成します。 検索フォームと検索結果一覧はHTMLファイルを分けて作成しています。 分けることは必須ではなく、 …

エンジニア未経験者の転職が難しくなったので解決策を提案してみる

現状 コロナ以降、未経験者のエンジニア採用が少しずつなくなっていきました。 それまではポートフォリオを作ったり、ある程度のポテンシャルがあると判断されれば 採用されるということがあったのですが、それが …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。