Para fines de interoperabilidad con Java, necesito una clase que tenga un constructor nullary que realice la inicialización. Los objetos de esta clase necesitan tener algo parecido a campos de Java mutables (es decir, el objeto representa el back-end de un juego, y necesita mantener el estado del juego).Añadir constructor para deftype clase creada
DEFTYPE hace todo lo quiero hacer excepto proporcionar un constructor nularia (ya que estoy creando una clase con campos).
No necesito los campos para ser legible públicamente, por lo que puedo pensar en soluciones: 4
Uso generación de clase; No quiero hacer esto si puedo evitarlo.
Codificando de algún modo variables de miembros privados fuera del conocimiento de deftype; Me han dicho que esto no se puede hacer.
Escribir un deftype modificado que también crea un constructor nullary; francamente, no sé clojure lo suficientemente bien para esto.
Tomando la clase creada por deftype y de alguna manera añadiéndole un nuevo constructor.
Al final de esto, necesito tener una clase Java, ya que voy a entregarla al código Java que creará un nuevo objeto de la clase.
¿Alguna de las soluciones que sugerí (o cualquiera que no haya pensado) además de usar gen-class es viable?
Parece que la creación del constructor está en el interior del código java de clojure. Así que modificar el tipo de definición en sí suena un poco difícil y una mala idea. –
¿cómo se accederá a los campos y la instancia generada yourClass.newInstance() y reflexión? ASÍ QUE quizás saber más sobre el uso del lado de Java para la clase generada ayudará, de lo contrario, tengo miedo de que sea hora de gen-class :( –