只计算一次属性

给出以下代码

class A class B { val property: A get() = A() } fun main(args: Array<String>) { val b = B() println(b.property) println(b.property) } 

它每次返回一个新的A实例B.property 。 是否有简单的方法让它每次都返回相同的实例?

您可以简单地使用委托属性,例如:

 class B { val property by lazy(::A) } 

您也可以像这样使用lambda表达式:

 class B { val property by lazy { A() } } 

你也可以这样做:

 object A class B { val property: A get() = A } fun main(args: Array<String>) { val b = B() println(b.property) // >>> A@3cd1a2f1 println(b.property) // >>> A@3cd1a2f1 }