Единственный способ получить его для компиляции и запуска, хотя я настоятельно рекомендую не использовать его, кроме проверки концепции, поскольку inline будет генерировать много мусорного кода, и каждый вызов getValue
будет проходить через весь оператор when
:
class B {
inline operator fun <reified T : Any>getValue(thisRef: Any?, property: KProperty<*>): T {
return when(T::class.java){
SomeType::class.java -> SomeType() as T
SomeOtherType::class.java-> SomeOtherType() as T
else -> Unit as T
}
}
}
Существует также operator fun provideDelegate
, который генерирует делегаты, но он также ограничен 1 возвращаемым значением. Я не думаю, что есть элегантный / поддерживаемый способ сделать то, что вам нужно прямо сейчас.