ホームページ > Java > &#&チュートリアル > オプションを使用した NullPointerException の処理

オプションを使用した NullPointerException の処理

Linda Hamilton
リリース: 2025-01-04 06:41:41
オリジナル
285 人が閲覧しました

Handling NullPointerException with Optional

意味

NPE は、null 参照を使用しようとしたときに発生する実行時例外です。 JVM は、プログラムのクラッシュを引き起こす可能性のある null ポインターの逆参照を防ぐために、この例外をスローします。

一般的な原因

基本的な例

String name = null;
int length = name.length(); // NPE thrown here
ログイン後にコピー

ここでは、null 参照でメソッドを呼び出そうとしています。変数名にオブジェクトが含まれていないため、length() を呼び出すことができません。

ネストされたオブジェクトの例

class User {
    Address address;
}
class Address {
    String street;
}

User user = new User();
String street = user.address.street; // NPE: address is null
ログイン後にコピー

これは、ネストされたオブジェクトへのアクセスがどのように失敗するかを示しています。ユーザーが存在する間、アドレスは初期化されていないため null です。

収集例

List<String> items = null;
items.add("item"); // NPE
ログイン後にコピー

コレクションは使用前に初期化する必要があります。空として初期化することをお勧めします: List items = 新しい ArrayList<>();

オプションの使用法の説明

基本的なオプションのチェーニング

Optional<User> user = Optional.of(new User());
String street = user
    .flatMap(User::getAddress)  // Converts User to Optional<Address>
    .map(Address::getStreet)    // Converts Address to Optional<String>
    .orElse("Unknown");         // Provides default if null
ログイン後にコピー

これにより、ネストされた null チェックが流暢な API に置き換えられます。各ステップは潜在的な null を安全に処理します。

マップとフィルター

Optional<String> upperStreet = Optional.ofNullable(user)
    .filter(u -> u.getName() != null)  // Only proceed if name exists
    .map(User::getName)                // Get the name
    .map(String::toUpperCase);         // Transform it
ログイン後にコピー

これは、null を安全に処理しながら値を変換する方法を示しています。

デフォルト値

String result = Optional.ofNullable(someString)
    .orElse("default");
ログイン後にコピー

null チェックの代わりにフォールバック値を提供するクリーンな方法。

条件付き実行

Optional.ofNullable(user)
    .ifPresent(u -> System.out.println(u.getName()));
ログイン後にコピー

値が存在する場合にのみコードを実行し、null でない場合のチェックを置き換えます。

以上がオプションを使用した NullPointerException の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート