AutoClosable的这种实现方式如何工作?

时间:2019-02-12 06:43:53

标签: java

我正在尝试理解以下代码段。我了解AutoClosable接口定义了close()方法。

  protected AutoCloseable fooAction() {
    enableFooResources();
    return () -> {
      disableFooResources()
    };
  }

return () -> {}的构造是什么意思?它如何返回一个AutoClosable对象。

感谢有人可以指出语言结构的名称,以便我查找。

1 个答案:

答案 0 :(得分:3)

() -> ...语法称为lambda表达式。从根本上讲,它们是只有一种方法的匿名类的替代方法(尽管它们没有编译成匿名类)。

您的代码类似于:

  protected AutoCloseable fooAction() {
    enableFooResources();
    return new AutoCloseable() {
        @Override
        public void close() throws Exception {
            SurroundingClass.this.disableResources();
        }
    }
  }

此意图很可能为调用者提供一种关闭fooAction资源的方法。

了解有关Lambda here的更多信息。