将 `by lazy` 和 `object` 结合使用会导致编译器错误 "cannot find symbol"
Combining `by lazy` and `object` results in compiler-error "cannot find symbol"
我在更新到 Kotlin 1.3.0 后无法再编译(在 1.2.71 中工作)尝试使用 by lazy
和 object
。这似乎只发生在我的项目上。演示项目运行良好。
我想为给定的 class 添加一个接口并延迟加载它的值。
我创建了一个小示例,它在我的项目中不起作用但在任何其他项目中都可以正常工作:
open class Foo
interface Bar {
val lazyLoadedString : String
}
class Test {
private val foo by lazy {
object : Foo(), Bar {
override val lazyLoadedString = "Demo"
}
}
}
一旦我组合了object
和by lazy
,它就无法再编译并显示以下错误。每一个单独使用都有效。
Test.java:9: error: cannot find symbol
private final my.package.Test$foo getFoo()
symbol: class Test$foo
location: package my.package
仔细观察,您会发现生成的 java 文件 显示此错误而不是 kotlin 代码。
对此有什么想法吗?
对于这种特殊类型的代码,Kotlin 1.3.0 中的 kapt 似乎已损坏。
在上面的代码中,触发它的是Realm注册的注解处理器,但任何其他注解处理器都会导致同样的错误。
我在更新到 Kotlin 1.3.0 后无法再编译(在 1.2.71 中工作)尝试使用 by lazy
和 object
。这似乎只发生在我的项目上。演示项目运行良好。
我想为给定的 class 添加一个接口并延迟加载它的值。
我创建了一个小示例,它在我的项目中不起作用但在任何其他项目中都可以正常工作:
open class Foo
interface Bar {
val lazyLoadedString : String
}
class Test {
private val foo by lazy {
object : Foo(), Bar {
override val lazyLoadedString = "Demo"
}
}
}
一旦我组合了object
和by lazy
,它就无法再编译并显示以下错误。每一个单独使用都有效。
Test.java:9: error: cannot find symbol
private final my.package.Test$foo getFoo()symbol: class Test$foo
location: package my.package
仔细观察,您会发现生成的 java 文件 显示此错误而不是 kotlin 代码。
对此有什么想法吗?
对于这种特殊类型的代码,Kotlin 1.3.0 中的 kapt 似乎已损坏。
在上面的代码中,触发它的是Realm注册的注解处理器,但任何其他注解处理器都会导致同样的错误。