15

私は将来のJava8リリース(別名JDK 1.8)で遊んでいます。

そして、私はあなたが簡単にできることを知りました

interface Foo { int method(); }

のように使用します

Foo foo = () -> 3;
System.out.println("foo.method(); = " + foo.method());

これは単に3を出力します。

また、より一般的な方法でこれを行うjava.util.function.Functionインターフェイスがあることもわかりました。ただし、このコードはコンパイルされません

Function times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);

そして、私は最初に次のようなことをしなければならないようです

interface IntIntFunction extends Function<Integer, Integer> {}

IntIntFunction times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);

では、IntIntFunctionステップを回避する別の方法があるかどうか疑問に思っていますか?

4

1 に答える 1

5

@joopと@edwinに感謝します。

JDK 8の最新リリースに基づいて、これで問題が解決するはずです。

IntFunction<Integer> times3 = (Integer triple) -> 3 * triple;

そして、あなたが気に入らない場合は、次のようなものでもう少しスムーズにすることができます

IntFunction times3 = triple -> 3 * (Integer) triple;

したがって、タイプや括弧を指定する必要はありませんが、アクセスするときにパラメーターをキャストする必要があります。

于 2012-12-07T11:39:49.690 に答える