Kotlin内置的“懒惰”功能实际上是如何工作的?

问题描述

我想在Kotlin代码中尝试一些带有委托属性的新东西。我在文档中发现的是,对于自定义委托属性,我需要创建带有强制性方法的类-getValue和可选的setValue,它们是文档中提到的接口的一部分:

您可以使用Kotlin标准库中的接口ReadOnlyPropertyReadWriteProperty将委托创建为匿名对象,而无需创建新类

我开始研究Kotlin的内置委托函数。我研究了lazy函数的实现,如下所示:

public actual fun <T> lazy(initializer: () -> T): Lazy<T> = SynchronizedLazyImpl(initializer)

这是我的问题所在:它为什么真正起作用? Lazy接口仅具有value属性,并且有一些方法确定其值的初始化。 SynchronizedLazyImpl仅此而已。它们都没有getValuesetValue方法,那么为什么Kotlin不会抱怨并成功编译?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)