【问题标题】:Better declaration of a constant with generated value更好地声明具有生成值的常量
【发布时间】:2018-09-18 12:01:30
【问题描述】:
在 Kotlin 中哪种声明会更好,为什么?
Key 这里总是相同的值
private val key: ByteArray by lazy {
byteArrayOf(some static bytes)
}
或者
private val key = byteArrayOf(some static bytes)
【问题讨论】:
标签:
android
performance
kotlin
lazy-evaluation
【解决方案1】:
如果静态字节相同,添加惰性委托不会给您带来任何好处。如果要计算的值需要一些计算工作(时间和/或空间),或者在某些情况下可能不需要,那么惰性是很有用的。所以你只想在真正需要的时候初始化它,而不是每次。
事实上,如果您确实每次都需要它,那么添加惰性委托只会增加开销。我会做最简单的事情,只有在我发现它有助于通过基准测试或测试时才选择懒惰的代表。
TLDR:坚持直接初始化数组,除非你不是每次都需要它并且需要大量资源来创建。