23

最後に、新しい Java 8 を紹介するこの記事Optionalでは、次のように述べています。

Optional は、Scala の Option[T] ほど強力ではありません (ただし、少なくとも null をラップすることはできません)。API は null 処理ほど単純ではなく、おそらくはるかに低速です。ただし、コンパイル時のチェックの利点に加えて、一貫して使用される Optional の読みやすさとドキュメントの価値は、欠点よりもはるかに優れています。

私は Scala の非常に基本的な知識を持っており、Java 8Optionalにも慣れてきているため、一見しただけでは、2 つの違いがあるとしても、何が違うのかわかりません。

たとえば、Scala ではパターン マッチングを使用してテストOptionを行い、作業を楽にできることを知っています。しかし、Scala の構文の機能を除いて、Java ではOptionできなくて Scala でできることがあれば知りたいです。Optional

これがばかげた質問としてマークされていないことを願っていますが、その「強力な」を読むたびに、疑問符が頭に浮かびます。

4

2 に答える 2

17

構文に関係のない違いについて話している場合、Tomasz Nurkiewicz はブログ投稿の最初の段落で最も大きな違いを強調しています。

Optional は Java 8 で導入されたため、標準の Java ライブラリ全体で使用されていないことは明らかです。下位互換性のために使用されることはありません。

default(emph. mine - 新しいメソッドを考えると、「決して」に固執しませんが)

したがって、Scala の最大の違いと最大の利点は、言語の API にはるかに緊密に統合されていることOptionです。

まず第一に、Scala を使い始める早い段階で (最も顕著なのは、Scala のMap#get.

逆に、Scala のOption APIを見ると、Scala のコレクション階層に「接合」されていることがわかります。つまり、必要なときにいつでもコレクションとして透過的に使用できることを意味します。図書館はこれまでその特殊性を扱ってきました。

于 2014-02-12T05:53:42.203 に答える