用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);
};
}
以下代码是与 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);
};
}