Dev*_*dra 5 java lambda anonymous-class java-8
我有抽象类,有两个方法如下:
public abstract class SessionExecutionBody {
public Object execute() {
executeWithoutResult();
return null;
}
public void executeWithoutResult() {}
}
Run Code Online (Sandbox Code Playgroud)
我按如下方式实现了这个类:
final HTTPDestination destination = sessionService.executeInLocalView(new SessionExecutionBody() {
@Override
public Object execute() {
userService.setCurrentUser(userService.getAdminUser());
final String destinationName = getConfigurationService().getConfiguration().getString(DESTINATION_PROPERTY);
return getHttpDestinationService().getHTTPDestination(destinationName);
Run Code Online (Sandbox Code Playgroud)
当我运行sonarLint时,它显示的主要问题是将这个匿名类转换为lambda表达式,但是我无法找到相同的方法,我可以将该表达式转换为lambda吗?
我怕你不能.这不是一个功能接口,有一个抽象方法以lambda样式实现它.
我可以将该表达式转换为lambda吗?
您可以进行以下更改:
@FunctionalInterface // to guarantee the next rule
interface SessionExecutionBody {
Object execute(); // has exactly one abstract method
default void executeWithoutResult() {} // other methods should be default/static
}
...
sessionService.executeInLocalView(() -> { /* a body */ return ...; })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |