私はオプション値の平等を証明するより便利な方法を探しています。オプションの平等をチェックする便利な方法
これはOracle Blog postが示唆するものである:貧困層の例のようなものだ。もちろん、
if (maybeUSB.filter(c -> "3.0".equals(c.getVersion())).isPresent()) {
...
}
のようなもので
Optional<USB> maybeUSB = ...; maybeUSB.filter(usb -> "3.0".equals(usb.getVersion())
.ifPresent(() -> System.out.println("ok"));
IMHO結果を、それは、USB自体のインスタンスをバージョンを比較していないので、しかし私はそれがまだ私のポイントを証明するべきだと思います。
これは本当に良いですか?
ん
boolean presentAndEquals(Object)
または
boolean deepEquals(Object)
私はここで何かが足りないのですか?
EDIT:
私はどちらかOptionals.equalsとその満足していません。 まず、オブジェクトをボックスに入れてすぐにunboxし、等価性をチェックする必要がありますか?あなたが偽であるために存在し、両方でない場合は、
:
if (maybeUSB.equals(Optional.ofNullable(testUSB))) {
...
}
(あなたも、むしろ直接equals
を呼び出すよりもObjects.equals
を使用することができます)
EDIT:
時期尚早に最適化しないでください。あなたはボックスを持っていなければなりません(コストを知らない)か、isPresent()のテストをしなければなりません。 'maybeFoo.equals(Optional.of(...))'は読み込み可能ですので、それを使用してください。 – slim
私は時期尚早な最適化について同意しますが、タイミングよりもゴルフの方がJavaの権利について話しています。 –
「私は満足していません」「オプション」について特別なことは何もない。 'new Frobnitz(" some string ")。equals(" some string ")'のためにtrueを返す 'String'を含む別のクラスがあると思いますか?簡潔さが有用な場合は、それがまったく間違っている場合よりも重要です。 –