1

尝试使用by lazy object. 这似乎只发生在我的项目上。演示项目运行良好。

我想为给定的类添加一个接口并延迟加载它的值。

我创建了一个小示例,该示例在我的项目中不起作用,在任何其他项目中都可以正常工作

open class Foo

interface Bar {
    val lazyLoadedString : String
}

class Test {
    private val foo by lazy {
        object : Foo(), Bar {
            override val lazyLoadedString  = "Demo"
        }
    }
}

一旦我结合objectand by lazy,它就无法再编译并显示以下错误。单独使用每一个都有效。

Test.java:9:错误:找不到符号
private final my.package.Test$foo$2$1 getFoo()

符号:类 Test$foo$2$1
位置:包 my.package

仔细观察,您会看到生成的 java 文件显示了这个错误,而不是 kotlin-code。

对此有什么想法吗?

4

1 回答 1

2

对于这种特殊类型的代码,看起来 kapt 在 Kotlin 1.3.0 中被破坏了。

在上面的代码中,触发它的是由 Realm 注册的注释处理器,但任何其他注释处理器都会导致相同的错误。

此处正在跟踪该问题:https ://youtrack.jetbrains.net/issue/KT-28053

于 2018-11-07T12:14:50.490 回答