Usar reflexión para pasar y modificar una primitiva sin usar matriz

Trabajando en un puerto imgui, siempre he usado matrices primitivas para simular el pase / pointers de c ++.

Por ejemplo:

checkbox("Anti-aliased lines", bool.apply { set(0, style.antiAliasedLines) }) style.antiAliasedLines = bool[0] 

donde bool: BooleanArray

Acabo de explorar la posibilidad de pasar directamente el campo en su lugar, tipo de c ++:

ImGui::Checkbox("Anti-aliased lines", &style.AntiAliasedLines);

kotlin:

checkbox("Anti-aliased lines", style::antiAliasedLines })

Solo necesitaba acomodar un KMutableProperty0<Boolean> en la checkbox() de checkbox() , y también comprobé dos veces para tener la posibilidad de establecer ese campo dentro de la misma function: hay un get(): Boolean y un set(Boolean)

Mis preocupaciones son:

  • esto juega bien con java?

  • ¿Hay alguna contraindicación que deba tener en count si sigo este path? Tales como actuaciones o lo que sea?

Porque tengo la sensación de que, dado que este enfoque es de alguna manera sucio y sucio

¿Esto funciona bien con Java?

Una cosa que no funcionará es hacer reference a las properties sintéticas que Kotlin utiliza para representar los captadores y establecedores de Java, por ejemplo, getFoo + setFoofoo (y no puede usar una bar::foo reference obligatoria ineludible bar::foo ). Esto no es compatible por ahora.

Puede intentar solucionarlo mediante una implementación KMutableProperty0 personalizada que acepte references invocables no Bar::getFoo para Bar::getFoo , Bar::setFoo y bar y que actúe como reference de propiedad en el sentido de get y establecer su valor.

¿Hay alguna contraindicación que deba tener en count si tomo esta ruta? Tales como actuaciones o lo que sea?

Una reference obligatoria ineludible contiene una reference al receptor, por lo que style::antiAliasedLines conservará el style de GC, y debe tener cuidado con las references invocables que almacena.

  • Reflexión de Kotlin: compruebe si la propiedad tiene tipo
  • ¿Cómo puedo crear una instancia de un object usando valores de parameters de constructor pnetworkingeterminados en Kotlin?
  • Quiero detectar si una class JVM es una class Kotlin o no
  • La igualdad de class Kotlin falla
  • ¿Cómo get un KType en Kotlin?
  • instancia :: class.java vs. instance.javaClass
  • ¿Cómo puedo establecer una propiedad de un object complementario en Kotlin a través de la reflexión?
  • Crear una nueva instancia de una KClass
  • Kotlin: doble operador de colon (reflexión) sobre
  • ¿Cómo obtengo una KProperty1 de una KProperty0?
  • ¿Cómo uso el object Kotlin por reflexión?