リファクタリング プログラミング 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


関連記事

no image

【PHP】配列と連想配列と多次元配列の説明と使用例

配列とは? 1つの変数に複数の値を持つものです。 整数型や文字列型は1つの変数に1つの値を持ちますが、配列は同じようなデータの集まりを1つの変数に持つことができるようになっています。 配列には通常の添 …

【Java入門】Integerの使い方まとめ

概要 「Integerはint型のフィールドを1つだけ持つラッパークラスである」 ということが公式に書かれています。 つまりint型の値を持ち、様々なメソッドを備えたオブジェクト型であるということです …

【Java入門】プロジェクトの作成からHello, World!まで

概要 プログラミングの入門といえば「Hello, World!」です。 まずは最も簡単なプログラムを動かすことから始めていきましょう。   プロジェクトの作成 新規プロジェクト作成 新規で「Javaプ …

Eclipseでタブを半角スペースに変換する便利プラグイン!

Eclipseでタブを半角スペースに変換する便利プラグインに、 AnyEdit Toolsというものがあります。 導入方法を以下に記載致しましたので参考にして下さい。   どういうものか? …

【Bootstrap】共通ヘッダーをナビバーとしてデザインしよう!

概要 ヘッダーをナビバーとして実装します。 (SpringBootチュートリアルの共通ヘッダーを基に解説していきます) また、デザインはBootstrapのサンプルを基にしていますので、 そちらも一度 …

記事を探す

SpringFramworkの良書

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

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