kotlin - 我可以在 Runnable 中“提前返回”吗?
问题描述
在一个Runnable
块内,我想做一些“保护块”,如下所示:
var condition: String? = null
Runnable {
if (condition == null) return
// do something
}
但编译器说“这里不允许返回”??
解决方案
有两种方法可以使这项工作:
如评论中所述,您可以使用此处讨论的“合格回报” 。这也是 IntelliJ(我猜也是 AndroidStudio)所建议的:
作为替代方案,您可以将 your 定义Runnable
为匿名类,使您能够使用普通return
语句:
object: Runnable {
override fun run() {
if (condition == null) return
// do something
}
}
IntelliJ 现在建议将其转换object
为 lambda,这将产生与合格的完全相同的东西return
:
Runnable {
if (condition == null) return@Runnable
// do something
}
PS:没必要傻!我想你会很容易用正确的措辞找到它。很高兴知道Runnable {}
这里有什么。它基本上是一个基于SAM 转换的 lambda (与具有单个抽象方法的 Java 类型一起使用)
推荐阅读
- sql - Laravel 查询不使用 where 子句作为日期
- javascript - 如果接受断开/连接 Web 套接字,WebSocket 不会重新连接
- bash - 如何在shell脚本的字符串中使用参数?
- java - Java javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] 消息:prolog 中不允许内容
- reactjs - 如何在不更改 url 的情况下在 reactjs 中渲染组件
- typescript - Typescript 未检测到声明“d.ts”文件中不存在的类型名称的错误
- javascript - Javascript 如何使用 API 检索数据
- python - 我使用烧瓶来更改按钮的可见状态。好像每种风格都需要不同的设计?
- android - ionic 4 文件选择器不允许选择多个 PDF 文件
- reactjs - 如何将 DocuSign API 与 React.js 一起使用?