我有2个类让我们称它们为A和B,我也有一个函数将A的实例转换为B的实例.
导致问题的代码基本上是:
fun fromAtoB(a: A) = B (fb1 = a.fa1, fb2 = a.fa2, fb3 = a.fa3)
val listOfA: List<A> = ...
val listOfB: listOfA.map { fromAtoB(it) }
Run Code Online (Sandbox Code Playgroud)
由于该行,这将无法构建:
fromAtoB(it)
Run Code Online (Sandbox Code Playgroud)
有错误:
由于错误类型检查遇到了递归问题.最简单的解决方法:明确指定声明的类型
我不知道我能做些什么来解决这个问题,谷歌没有提供似乎适用于我的问题的结果......
在此先感谢您的帮助!
编辑:
以下是实际的源文件:
这种类型的问题意味着编译器无法推断listOfB应该是什么类型,因为您在其定义中的某处有一个递归调用.这很奇怪,因为我在您的示例代码中看不到任何内容,但也许您无意中遗漏了有问题的代码.无论如何,通常通过执行错误消息建议解决此问题,手动指定返回类型,如下所示:
val listOfB: List<B> = listOfA.map { fromAtoB(it) }
Run Code Online (Sandbox Code Playgroud)
编辑:在尝试真正的代码之后,我只是在预感之后改变了TenantEntity.kt中的第45行:
fun fromDto(dto: TenantDto) = TenantEntity (
Run Code Online (Sandbox Code Playgroud)
对此:
fun fromDto(dto: TenantDto): TenantEntity = TenantEntity (
Run Code Online (Sandbox Code Playgroud)
而错误消失了.我不确定为什么,但现在应该编译.
第二次编辑:进一步检查后,您将使用此代码遇到StackOverflowException,这最终导致编译器无法解析该类型.当你打电话时TenantEntity.fromDto(...),它会调用ReceiptEntity.fromDto(...),然后再调用TenantEntity.fromDto(...),然后再调用,进入永久性(或堆栈限制).这不会起作用,你需要在那里修复你的逻辑.
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |