2017-05-25 23 views
5

Oluşturma sırasında belirli bir değeri bildiğim bir sınıfım var, ya da onu üretmem gerekiyor, ki bu biraz pahalı. Değeri gerçekten gerekli olduğunda üretebilir miyim?Kurucuya bağlı olarak bir değer atabilir miyim?

val expensiveProperty: A 
constructor(expensiveProperty: A) { 
    this.expensiveProperty = expensiveProperty 
} 
constructor(value: B) { 
    // this doesn't work 
    this.expensiveProperty = lazy { calculateExpensiveProperty(value) } 
} 
+0

[bu] (https://stackoverflow.com/a/36233649/6521116) yardımcı olabilir –

cevap

5

O ama bir farkla, mümkün: Kamu ikincil kurucular bırakarak ben birincil yapıcı olarak gizli tutulur nasıl

class C private constructor(lazy: Lazy<A>) { 
    val expensiveProperty by lazy 

    constructor(value: B) : this(lazy { calculateExpensiveProperty(value) }) 
    constructor(expensiveProperty: A) : this(lazyOf(expensiveProperty)) 
} 

Not.

+0

Bu güzel bir çözümdür, yanıt verirken yapıcının değerine dikkat etmedim. – chandil03

+0

Teşekkürler, işe yaradı! – Chris

İlgili konular