我正在尝试理解以下代码段。我了解AutoClosable
接口定义了close()
方法。
protected AutoCloseable fooAction() {
enableFooResources();
return () -> {
disableFooResources()
};
}
return () -> {}
的构造是什么意思?它如何返回一个AutoClosable对象。
感谢有人可以指出语言结构的名称,以便我查找。
答案 0 :(得分:3)
() -> ...
语法称为lambda表达式。从根本上讲,它们是只有一种方法的匿名类的替代方法(尽管它们没有编译成匿名类)。
您的代码类似于:
protected AutoCloseable fooAction() {
enableFooResources();
return new AutoCloseable() {
@Override
public void close() throws Exception {
SurroundingClass.this.disableResources();
}
}
}
此意图很可能为调用者提供一种关闭fooAction
资源的方法。
了解有关Lambda here的更多信息。