項目 オプション返却時の注意
Java 8 以前のアプローチ:
- スロー例外: 例外的な状況のために予約されており、スタック トレース キャプチャのためコストがかかります。
- null を返す: null を返す可能性に対処する特別なコードが必要です。これにより、NullPointerException などのエラーが発生する可能性があります。
Java 8 のアプローチ:
- 値を含むことも空にすることもできる不変のコンテナである Optional クラスの紹介。
- null の使用を回避し、例外をスローせずに欠損値の処理を簡素化します。
- メソッドは、値が存在しないことを表すために Optional を返すことができます。
オプションを使用する利点:
- null による例外と問題を回避します。
- 値が欠落している場合にクライアントが何をするかを決定できるようにします (デフォルト値を提供する、例外をスローするなど)。
- 明示的な null 処理を必要とせずにコードを簡単にします。
Optional クラスの便利なメソッド:
- Optional.of(value): null 以外の値で Optional を作成します。
- Optional.ofNullable(value): Optional を作成しますが、null 値を受け入れます。
- orElse(value): Optional が空の場合、デフォルト値を返します。
- orElseThrow(): 値が存在しない場合は例外をスローします。
- map()、 flatMap()、filter(): Optional 内の値の操作を許可します。
オプション:
にコレクションを含めないでください。- リストや配列などのコンテナ タイプの場合、Optional の代わりに空のコレクションを返します。
パフォーマンスに関する考慮事項:
- Optional の使用には、オブジェクト割り当ての点でコストがかかります。
- プリミティブ型の場合は、マーシャリング コストを回避するために、OptionalInt、OptionalLong、および OptionalDouble を使用します。
オプションの他の使用法には注意してください:
これらをマップのキーや値として、またはコレクション内で使用することは避けてください。
オプションのゲッターなど、意味がない限り、インスタンス フィールドとして使用することは避けてください。
コード例
例 1: Optional
の基本的な使用法
import java.util.Optional; public class ExemploOptional { public static Optional<String> encontrarNome(String[] nomes, String nomeBuscado) { for (String nome : nomes) { if (nome.equalsIgnoreCase(nomeBuscado)) { return Optional.of(nome); } } return Optional.empty(); // Retorna Optional vazio se não encontrar o nome } public static void main(String[] args) { String[] nomes = {"João", "Maria", "Ana"}; Optional<String> nomeEncontrado = encontrarNome(nomes, "Maria"); nomeEncontrado.ifPresent(nome -> System.out.println("Nome encontrado: " + nome)); System.out.println(nomeEncontrado.orElse("Nome não encontrado")); } }
例 2: orElseThrow の使用
import java.util.Optional; public class ExemploOrElseThrow { public static Optional<Integer> buscarIdade(String nome) { if (nome.equals("João")) { return Optional.of(30); } return Optional.empty(); // Retorna Optional vazio se o nome não for "João" } public static void main(String[] args) { Optional<Integer> idade = buscarIdade("Maria"); // Lança uma exceção se o valor não estiver presente int valorIdade = idade.orElseThrow(() -> new IllegalArgumentException("Idade não encontrada!")); System.out.println("Idade: " + valorIdade); } }
例 3: プリミティブ型のオプション
import java.util.OptionalInt; public class ExemploOptionalInt { public static OptionalInt buscarIdade(String nome) { if (nome.equals("João")) { return OptionalInt.of(30); } return OptionalInt.empty(); // Retorna OptionalInt vazio se o nome não for "João" } public static void main(String[] args) { OptionalInt idade = buscarIdade("João"); if (idade.isPresent()) { System.out.println("Idade encontrada: " + idade.getAsInt()); } else { System.out.println("Idade não encontrada"); } } }
以上が項目 オプション返却時の注意の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。
