首页 > 解决方案 > 这个 AutoClosable 的实现是如何工作的?

问题描述

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

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

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

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

标签: java

解决方案


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

您的代码类似于:

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

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

在此处了解有关 lambda的更多信息。


推荐阅读