Как я могу ленить инициализировать поле и выполнить утверждение на нем?Можно ли лениво инициализировать имущество и утверждать его?
Я попытался
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)...
Как я могу решить?
Btw, я думаю, что это называется 'property', а не' field' – voddan
Не скрывайте код, который вызывает исключение. Не заставляйте нас угадывать, что вы делаете неправильно. –
Исправлено оба, спасибо – elect