java - 使用 lambda 重构接口(interface)实现?

标签 java lambda java-8

以下代码是与 spring 一起使用的常见构造框架。它的目的是提供配置类,它本身提供所需的实现类,这里AsyncUncaughtExceptionHandler .

是否可以/建议使用新的 java 1.8 lambda 表达式重构此代码?如果是,怎么办?

@Component
public class AsyncConfigurer extends AsyncConfigurerSupport {
    @Autowired
    private CustomService service;

    @Autowired
    private Logger logger;

    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return new AsyncUncaughtExceptionHandler() {
            @Override
            public void handleUncaughtException(Throwable ex, Method method, Object... params) {
                service.call();
                logger.fatal(ex);
            }
        };
    }
}

最佳答案

您是否想要这样做取决于您;这主要是风格问题。

如果你这样做了,它看起来会像这样:

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
  return (ex, method, params) -> {
    service.call();
    logger.fatal(ex);
  };
}

关于java - 使用 lambda 重构接口(interface)实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29212601/

相关文章:

c# - Lambda 表达式 : CS to VB. 网络

orm - 在没有 UI 的情况下配置 Speedment?

java Runtime.getRunTime().exec 和通配符?

java - java中垃圾收集器的逻辑

java - 数组的有效大小与实际大小,如何知道有效大小?

java - 如何检查 Date 对象或 Calendar 对象是否为有效日期(真实日期)?

java - 在 Java 中创建通用 lambda

java - 字符串常量池(JDK 6)中的 "a"与 'new String("和 ")' 与 'new String("与 ").intern()'

java - 序列化 CompletableFuture 字节码

c++ - 为什么将 std::bind 与 lambda 一起使用时生成的对象如此之大?