Java 7项目下基于AWS SDK 1.7将Lambda表达式转换为普通方法的技术问询
解决Java 7下Lambda转普通方法的问题
没问题,既然你的项目基于Java 7不支持Lambda表达式,我们可以用匿名内部类来替代原来的Lambda实现——毕竟Lambda本质就是简化的函数式接口实现,而Unmarshaller恰好是只有一个抽象方法的函数式接口。
下面是转换后的完整代码,逻辑和原Lambda完全一致:
final Unmarshaller<ApiGatewayResponse, JsonUnmarshallerContext> responseUnmarshaller = new Unmarshaller<ApiGatewayResponse, JsonUnmarshallerContext>() { @Override public ApiGatewayResponse unmarshall(JsonUnmarshallerContext in) throws Exception { // 原Lambda里的打印逻辑 System.out.println(in.getHttpResponse()); // 原Lambda里的返回逻辑 return new ApiGatewayResponse(in.getHttpResponse()); } };
需要注意两个小细节:
- 必须显式重写
unmarshall方法,并且声明抛出Exception——因为Unmarshaller接口的这个方法本身就声明了异常,Java 7的匿名内部类要求我们明确写出这一点(Lambda会自动隐式处理) - 保持变量的
final修饰符,和原代码保持一致,确保符合你的使用场景
内容的提问来源于stack exchange,提问作者VijayS
相关产品推荐
相关产品推荐

