java - 这个 AutoClosable 的实现是如何工作的?
问题描述
我正在尝试理解以下代码片段。我知道AutoClosable
接口定义了一个close()
方法。
protected AutoCloseable fooAction() {
enableFooResources();
return () -> {
disableFooResources()
};
}
构造是什么return () -> {}
意思?它如何返回一个 AutoClosable 对象。
感谢有人能指出语言结构的名称,以便我查找。
解决方案
该() -> ...
语法称为 lambda 表达式。它们基本上是只有一个方法的匿名类的替代品(尽管它们没有编译成匿名类)。
您的代码类似于:
protected AutoCloseable fooAction() {
enableFooResources();
return new AutoCloseable() {
@Override
public void close() throws Exception {
SurroundingClass.this.disableResources();
}
}
}
意图很可能为调用者提供一种关闭任何资源fooAction
的方法。
在此处了解有关 lambda的更多信息。
推荐阅读
- linux - 为什么我的 crontab 不能正确执行 bash?
- sql - 折叠空单元格上的行以在 SQL 中提供单行结果
- indexing - 使用 LIKE 进行子字符串搜索是否受益于索引?
- swift - 基本的 Swift 包依赖理解
- javascript - 在 Logout.js 文件中进行哪些更改以便在我单击注销按钮后重定向到注册页面?
- javascript - 如何在 Wordpress 网站的 jQuery javascript 语句中添加滚动操作
- sql-server - 是否可以将值从 PYODBC 传递到 SQL Server 的表类型参数?
- python - 来自不同长度列表列表的 xarray 变量
- python - pandas dataframe:通过浮点范围的变量选择行
- android - 使用 parcelable 在活动之间传递类的对象