面试题答案
一键面试class LazyValue<T>(private val supplier: () -> T) {
private var value: T? = null
fun getValue(): T {
if (value == null) {
value = supplier()
}
return value!!
}
}
工作原理解释
- 类定义:
LazyValue
类接收一个无参数且返回类型为T
的函数supplier
,T
是泛型,代表最终返回值的类型。 - 成员变量:
private var value: T? = null
用于存储最终计算出来的值,初始值为null
。 getValue
方法:这个方法用于获取计算后的值。首次调用时,value
为null
,此时执行supplier()
函数,计算出结果并赋值给value
。后续再调用getValue
方法时,直接返回value
,不再执行supplier
函数,从而实现了惰性求值且只执行一次计算的功能。