我刚刚开始使用 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/