5

私はGuavaライブラリが初めてです。

メソッドの引数で Optional を使用しようとしています。私が見つけた 1 つの問題は、null 値を Optional に渡すことができないことです。

Optional導入の目的は差別化だと思う

  1. 価値のないもの
  2. null 値を持つもの

たとえば、Optional.absent() は値が存在しないことを意味します。null は存在する値ですが。

このロジックでは、Optional には、null 値を保存できるようにする何らかの方法が必要であると想定しています。しかし、これを行う方法が見つかりませんでした。

私の方法は次のように定義されています。

void myMethod(Optional<String> arguments) {
    ....
}

私が使用する場合

myMethod(Optional.of(null));

値をnullにすることはできないというランタイムエラーが表示されます。

Optional 内で null を渡すにはどうすればよいですか?

4

4 に答える 4

1

JavaDocを参照

別のオブジェクトへの null 以外の参照を含む可能性のある不変オブジェクト。この型の各インスタンスには、null 以外の参照が含まれているか、何も含まれていません (この場合、参照は「存在しない」と言います)。「含む」とは決して言われませんnull

[...]

于 2013-08-31T21:17:37.770 に答える
1

これは意図的な制限だと思います。

OptionalMaybe モナド実装です。これは、タイプ セーフな方法で null を置き換えることを目的としており、オプション値が存在する場合、NullPointerExceptionそれを使用しようとしたときに が取得されないことを保証します。挿入を許可すると、nullこの型安全性の保証が破られます。

2 種類の「データなし」値を本当に区別する必要がある場合は、Optional<Optional<String>>代わりに を使用することを検討してください (内側の null の可能性があるデータを でラップしますOption<String>) Optional.fromNullable

于 2013-08-31T21:18:15.290 に答える
1

使用するOptional.fromNullable(T nullableReference)

于 2013-08-31T21:20:22.643 に答える