2016-11-16 4 views
3

Java 8には、そのパラメータを長い値に変換するToLongFunctionなどの機能的なインタフェースが追加されました。質問はあるJava 8 ToLongFunctionいつ使うべきですか?

ToLongFunction<String> i = (x)-> Long.parseLong(x); 

System.out.println(i.applyAsLong("2")); 

:なぜ私はそれがよりシンプルで読みやすいだろうだけプリミティブlongに変数を変換するためのインタフェースを実装する必要があり

私は以下のコードのように例を見ましたLong.parseLong(x)メソッドを呼び出すだけですか?

+1

これは、無名関数を表すために使用されます。パラメータの変換後に長い関数を返さなければならない上位関数がある場合、渡された関数の型を 'ToLongFunction'に設定します。 – Carcigenicate

答えて

6

短い答えは、ではありません。その場合は、その場合はLong.parseLong()に直接電話するだけです。

上記ののように明示的に型を明示的に宣言することはめったにありません。それら。 ["123", "456", ...]longのリストにそれらのすべてを解析:

が新しい Streamインタフェースからの例を使用するには、のような数値を持っている List<String> input Stringのオブジェクトを取ることができます。ここで

long[] result = input.stream().mapToLong(x -> Long.parseLong(x)).toArray(); 

あなたが直接ToLongFunctionを書いたことはありませんが、間接的にあなたのLong.parseLong(x)メソッドを呼び出しますmapToLong(ToLongFunction f)にラムダ方法を提供することにより、それを使用:

はあなたのような何かをすることを行うことができます。したがって、機能的なインターフェイスは、その作業を支援する魔法でした。

ですから、Javaの8 Streamおよびその他のラムダ関連の機能ですべての時間、このインタフェースを間接的に利用するだろうが、あなたがしたいクラスを書いている場合を除き、あなたは、このようなを受け入れる(非常に多くの場合、明示的にそれを使用することはできません機能)。

+2

最初の文章では、parseIntの代わりにparseLongを使用したと思います –

5

Java 8には、そのパラメータを長い値に変換するToLongFunctionなどの機能的なインタフェースがあります。

これはToLongFunctionの誤解である:それがLong.parseLongまたはいくつかの他の完全に異なる機能を介して得ているかどうかプリミティブ長い出力を有し、任意関数であることを意図しています。多分それはPerson.getIdNumber()です。いずれにしても

、あなたは基本的にあなたが あなたは原始的long結果を持ちたいラムダを受け入れる方法を書いているとき以外は ToLongFunctionを参照することはありません。そうでなければ、ラムダを直接書くだけです。

関連する問題