如何在Lambdas

时间:2015-09-03 17:10:17

标签: java lambda java-8

假设我们有以下没有Lambdas的代码:

doSomething.consumer("someString", new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    //do some code                         
                }
            });

如何使用Lambdas转换此代码并将Lambda的参数用作

 Handler<Message<JsonObject>>

这就是消费者方法的样子:

<T> MessageConsumer<T> consumer(String address, Handler<Message<T>> handler);

3 个答案:

答案 0 :(得分:2)

您可以这样做来定义T是什么

doSomething.<JsonObject>consumer("someString", event -> { /* do some code */ });

或定义event是什么类型

doSomething.consumer("someString", (Message<JsonObject> event) -> { /* do some code */ });

或定义您希望处理程序的类型。

doSomething.consumer("someString", (Handler<Message<JsonObject>>) 
                                   (event -> { /* do some code */ }));

答案 1 :(得分:0)

MessageConsumer<JsonObject> consumer = 
    doSomething.consumer("someString", event -> {
        // some code
    });

答案 2 :(得分:0)

你想用lambda&#39;重新编写处理程序吗?可能类似于以下

<T> MessageConsumer<T> consumer(String address, Function<Message<T>, Void> function);

而不是

doSomething.consumer("someString", new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                //do some code                         
            }
        });
你可以写

doSomething.consumer("someString", message -> null);