只计算一次属性
给出以下代码
class A class B { val property: A get() = A() } fun main(args: Array) { val b = B() println(b.property) println(b.property) }
它每次返回一个新的A
实例B.property
。 是否有简单的方法让它每次都返回相同的实例?
您可以简单地使用委托属性,例如:
class B { val property by lazy(::A) }
您也可以像这样使用lambdaexpression式:
class B { val property by lazy { A() } }
你也可以这样做:
object A class B { val property: A get() = A } fun main(args: Array) { val b = B() println(b.property) // >>> A@3cd1a2f1 println(b.property) // >>> A@3cd1a2f1 }