Tag: 延迟初始化

是否可以懒惰地初始化一个属性并声明它?

我怎么能懒惰初始化一个字段,并执行一个断言呢? 我试过了 val table: Array<FormatInfo> by lazy { val t = arrayOf(…) assert(table.size == FORMAT_COUNT, { System.err.println("GLI error: format descriptor list doesn't match number of supported formats") }) t } 但它溢出了: java.lang.StackOverflowError at gli.GliKt$table$2.invoke(gli.kt:451) at gli.GliKt$table$2.invoke(gli.kt) at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) at gli.GliKt.getTable(gli.kt) at gli.GliKt$table$2.invoke(gli.kt:693) at gli.GliKt$table$2.invoke(gli.kt) at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) at gli.GliKt.getTable(gli.kt) at gli.GliKt$table$2.invoke(gli.kt:693)… 我该如何解决?

迟到,懒惰和单身模式在kotlin

我试图将我的项目的一部分从java转换到kotlin 。 其中之一是单身经理班。 java类看起来像这样 public class Manager { private static volatile Manager Instance = null; private static final Object InstanceLock = new Object(); private Manager(Object1 object1, Object2 object2, Object3 object3){//…}; public static boolean isInitialized(){ synchronized(InstanceLock){ return Instance == null; } } public static void initialize(Object1 object1, Object2 object2, Object3 object3){ if(Instance == null){ synchronized(InstanceLock){ if(Instance […]