вы можете использовать:
MutableMap < KClass<Entity>, (Entity) -> Unit > = mutableMapOf()
или:
MutableMap < KClass<Entity>, Function1<Entity, Unit> > = mutableMapOf()
вместо использования карты вы можете использовать этот метод :
fun <T: Entity> setViewText(en: T) =
when(en){
is Entity1 -> view.entity1.text = en.value1.toString()
is Entity2 -> view.entity2.text = en.value2.toString()
else -> throw Exception("Invalid Entity")
}
вы не получаете подпись подписи, но я думаю вы можете запустить ее следующим образом (если подписка получает лямбда-аргумент как (Entity) -> Unit
и имеет получателя сущности):
.subscribe{ map[this::class] } // if subscribe has Entity receiver
еслиподписка не имеет получателя сущности:
.subscribe{ map[it::class]?.invoke(it) }