Kotlin, receptor de funciones de casting

Tengo un par de object , como el object Buffer , que ofrece funciones determinadas y me gustaría llamar

 binding(bufferName[Buffer.VERTEX] to GL_ARRAY_BUFFER) { ... // calling Buffer functions } 

donde dentro tengo disponible, por ejemplo, las funciones del object Buffer debido al GL_ARRAY_BUFFER

binding es en este momento tan definido

 inline fun <T, R> binding(pair: Pair<Int, Int>, block: T.() -> R) 

Entonces mi pregunta es si es posible "lanzar" T a un object específico basado en pair.second para que pueda llamar a esas funciones que ofrece el object.

De acuerdo con mi mejor conocimiento, no es posible elegir T dependiendo del pair.second valores Int. pair.second . Sin embargo, las classs selladas son una buena forma de implementar este tipo de lógica de "enum con diferentes methods para cada valor":

 sealed class BufferType(val type: Int) { class ArrayBuffer() : BufferType(GL_ARRAY_BUFFER) class AtomicCounterBuffer() : BufferType(GL_ATOMIC_COUNTER_BUFFER) /* other buffer types... */ } inline fun <Buffer: BufferType, R> binding(pair: Pair<Int,Buffer>, block : (Buffer) -> R) { glBindBuffer(pair.second.type, pair.first) block() /* ... */ } 

A continuación, puede exponer todos los methods de búfer disponibles en la class BufferType nivel superior (para methods disponibles a nivel mundial) o en cada tipo de búfer individual.

  • ¿Por qué Mockito no puede burlarse de un tipo de parámetro genérico con el tipo de número en Kotlin?
  • Kotlin REPL con Android Classes unStub! Ed
  • Kotlin: crea y refiere matrices de Java verdaderas (para JNA)
  • Kotlin: anexar text y cerrar resources
  • ¿Cómo manejar correctamente los valores de Byte superiores a 127 en Kotlin?
  • Referencia no resuelta: kotlinx - Kotlin 1-0-0-rc-1036
  • Mejora en el análisis de Java / Kotlin JSON
  • Error al build el jarro del proyecto IntelliJ que contiene Groovy mezclado, Kotlin
  • Transacciones de Jooq: las conexiones no se liberan al set, si se lanza una exception en la transacción
  • El operador de Kotlin Reflection obtiene la implementación
  • ¿Cómo hacer clic en el evento oyente en Kotlin / JavaScript?