Pregunta

Cuando se utiliza reify en Clojure, ¿cómo puedo proporcionar una expresión para el constructor?

Por otra parte, ¿cómo puedo pasar argumentos al constructor de la clase base?

¿Fue útil?

Solución

No se puede utilizar reify a las clases y subclases de crear una instancia - que sólo está destinado para su uso con protocolos e interfaces. (Puede proporcionar implementaciones de métodos de Object, sin embargo.)

Para crear una instancia subclases anónimos de clases arbitrarias y / o interfaces, uso proxy. Todos los argumentos a la ctor superclase de un proxy, si los hay, van en el vector args (el segundo argumento) de la forma proxy:

(proxy [SomeClass SomeInterface-1 ...] [ctor-arg-1 ...]
  ; method impls follow
  ...
  )

Ver (doc proxy) para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top