我正在尝试转换Java方法:
private <T> Callable<T> createCallable(final Callable<T> task) {
return () -> {
try {
return task.call();
} catch (Exception e) {
handle(e);
throw e;
}
};
}
Run Code Online (Sandbox Code Playgroud)
从以下Java文件ExceptionHandlingAsyncTaskExecutor.java进入Kotlin。
该代码使用IntelliJ IDEA自动转换为:
private fun <T> createCallable(task: Callable<T>): Callable<T> {
return {
try {
return task.call()
} catch (e: Exception) {
handle(e)
throw e
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是不正确的。但是我必须考虑应该采用哪种正确的实现方式。有任何想法吗?
我认为这是Kotlin转换器错误。它将您的代码转换为() -> T而不是Callable<T>(基本上是相同的,但实际上是不同的类型)。这是工作代码
private fun <T> createCallable(task: Callable<T>): Callable<T> {
return Callable {
try {
task.call()
} catch (e: Exception) {
handle(e)
throw e
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |