我刚刚开始使用 Java 8,我正在努力处理这个代码片段:

paramsValues[idx++] = new ReplyMessage<JsonObject>() {
    @Override
    public void reply(JsonObject reply) {
        message.reply(reply);
    }
};

如何将其转换为 Lambda 风格?

最佳答案

如果 ReplyMessage 是一个功能接口(interface),你可以这样做

paramsValues[idx++] = reply -> message.reply(reply);

这是您问题中其他类的 stub 实现的完整示例:
// Stub classes
class JsonObject { }

@FunctionalInterface
interface ReplyMessage<T> {
    void reply(T jo);
}

class LambdaDemo {
    public static void main(String args[]) {

        // Dummy variables
        ReplyMessage<JsonObject> message = new ReplyMessage<JsonObject>() {
            public void reply(JsonObject jo) {}
        };
        ReplyMessage[] paramsValues = new ReplyMessage[5];
        int idx = 0;

        // Your code, lambdafied
        paramsValues[idx++] = reply -> message.reply(reply);

        // Or,
        // paramsValues[idx++] = message::reply;

        // But then you could perhaps do with just ...
        // paramsValues[idx++] = message;
    }
}

关于java - 如何将此代码转换为 java8 lambda,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28013693/

10-11 20:10