Java 自动关闭的实现是如何工作的?

Java 自动关闭的实现是如何工作的?,java,Java,我试图理解下面的代码片段。我知道,AutoClosable接口定义了一个close()方法 protected AutoCloseable fooAction() { enableFooResources(); return () -> { disableFooResources() }; } return()->{}的构造是什么意思?它如何返回可自动关闭的对象 如果有人能指出语言结构的名称以便我查找,我将不胜感激。语法称为lambda表达式。

我试图理解下面的代码片段。我知道,
AutoClosable
接口定义了一个
close()
方法

  protected AutoCloseable fooAction() {
    enableFooResources();
    return () -> {
      disableFooResources()
    };
  }
return()->{}
的构造是什么意思?它如何返回可自动关闭的对象

如果有人能指出语言结构的名称以便我查找,我将不胜感激。

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

您的代码类似于:

  protected AutoCloseable fooAction() {
    enableFooResources();
    return new AutoCloseable() {
        @Override
        public void close() throws Exception {
            SurroundingClass.this.disableResources();
        }
    }
  }
这样做的目的很可能是为调用方提供一种方法来关闭
fooAction
将要执行的任何资源

了解有关lambda的更多信息。

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

您的代码类似于:

  protected AutoCloseable fooAction() {
    enableFooResources();
    return new AutoCloseable() {
        @Override
        public void close() throws Exception {
            SurroundingClass.this.disableResources();
        }
    }
  }
这样做的目的很可能是为调用方提供一种方法来关闭
fooAction
将要执行的任何资源


了解有关lambdas的更多信息。

您正在查看AutoCloseable的lambda实现您正在查看AutoCloseable的lambda实现