2017-06-25 7 views
1

それは新しいAインスタンス毎回B.propertyを返し、次のコード計算プロパティは、一度だけ

class A 
class B { 
    val property: A 
     get() = A() 
} 

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

を考えます。毎回同じインスタンスを返す簡単な方法はありますか?

答えて

2

次の例のように、単純に委任プロパティlazyを使用することができます。

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

あなたはまた、次のように代わりにラムダ式を使用することができます。

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

ます。また、この方法でそれを行うことができます。

object A 
class B { 
    val property: A 
     get() = A 
} 

fun main(args: Array<String>) { 
    val b = B() 
    println(b.property) // >>> [email protected] 
    println(b.property) // >>> [email protected] 
} 
+0

私はそれをオブジェクトにすることはできませんが、良いアイデア – Mibac

+0

次に、@holとして遅延プロパティを使用します私は、Javaの提案: –

+0

ええ、私は思う。私はこれを行うより便利な方法があると思った。 – Mibac