用lambda重构接口实现?

Use lambda to refactor interface implementations?

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

是否 possible/advisable 使用新的 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);
  };
}