Estoy tratando de crear una clase que amplíe la corriente de entrada Clojure a través de gen-class
. Si quiero invocar el método de la clase padre, ¿cómo hago eso?¿Cómo invocar el método de superclase en un método de clase gen de Clojure?
Respuesta
De (doc gen-class)
:
:exposes-methods {super-method-name exposed-name, ...}
It is sometimes necessary to call the superclass' implementation of an
overridden method. Those methods may be exposed and referred in
the new method implementation by a local name.
Por lo tanto, con el fin de ser capaz de llamar al método de los padres fooBar
, que diría
(ns my.custom.Foo
(:gen-class
; ...
:exposes-methods {fooBar parentFooBar}
; ...
))
Luego de implementar fooBar
:
(defn -fooBar [this]
(combine-appropriately (.parentFooBar this)
other-stuff))
Además de la instalación de :gen-class
proporcionada por ns
formas, existe una gen-class
macro.
Gracias por la respuesta y la información adicional en la edición. La adición del the. en la invocación es un detalle importante. – Bill
Esta no es una respuesta a su pregunta real, pero tengo una pequeña biblioteca que le permite fingir que InputStream es una interfaz en lugar de una clase (para que no necesite gen-class en absoluto). Consulte io.core.InputStream
, que le permite reificar io.core.InputStreamable
y obtener un InputStream personalizado. Los campos de instancia que necesite pueden ser locales cerrados por reify
.
Interesante idea. Había pensado en algo así, pero en última instancia quiero un flujo de entrada en caso de que quiera devolvérselos a Java. – Bill
El punto es que obtienes un flujo de entrada. Usted crea un InputStreamable que describe su lógica, y le da a InputStream, una clase AOTed Java. Por ejemplo, '(InputStream. (Reify InputStreamable (read ...) (skip ...)))'. – amalloy
@Bill Olvidé a @ en el comentario anterior. Creo que eso significa que no te notificaron; disculpas si ahora recibes una segunda notificación. – amalloy
- 1. ¿Cómo invocar el método de clase CCColorLayer de otro método de clase (amplía actividad), Android?
- 2. ¿Cómo puedo invocar un método de clase mediante NSInvocation?
- 3. llamada a un método de superclase automáticamente
- 4. clojure gen-class varargs constructor
- 5. invocar dinámicamente un método de clase en Objective C
- 6. Declarar una matriz como tipo de retorno en la declaración de método gen-class en Clojure
- 7. ¿Alguna manera de invocar un método privado?
- 8. ¿Cómo agregar dinámicamente un método de clase?
- 9. Llamar a un método anulado, superclase a llamadas reemplazadas método
- 10. Reflexión: ¿Cómo invocar el método con parámetros
- 11. Adjuntar metadatos a una clase de gen Clojure
- 12. com.sun.jdi.InvocationException ocurrió al invocar el método
- 13. Llamar a un método de subclase de la superclase
- 14. El método onClick (Ver) de tipo oddg debe anular un método de superclase?
- 15. ¿Se puede invocar un método de clase main() en otra clase en java
- 16. Cómo usar Reflection para invocar un método sobrecargado en .NET
- 17. invocar método personalizado en el valor cambiado
- 18. ¿Invocar un método de clase C++ sin una instancia de clase?
- 19. ¿Cómo invoco dinámicamente un método de clase en PHP?
- 20. ¿Es posible invocar el método interno desde un método dinámico en .NET?
- 21. Forma maravillosa de invocar dinámicamente un método estático
- 22. ¿Cómo acceder a un método de superclase desde una clase anidada?
- 23. excepción de acceso al invocar el método de una clase anónima mediante el reflejo de java
- 24. ¿Invocar método de ranura sin conexión?
- 25. ¿Cómo uso la reflexión para invocar un método con parámetros?
- 26. Decorar un método que ya es un método de clase?
- 27. Método Clojure Falta
- 28. ¿Cómo crear un método de clase privado?
- 29. ¿Cómo invocar el método HTTP POST sobre SSL en ruby?
- 30. Cómo invocar un método en Java usando la reflexión
Esta es una vieja pregunta, pero a veces llama la atención. FWIW, como he usado Clojure a lo largo de los años, he descubierto que si creo que necesito el poder de gen-class para hacer algo como esto, es más fácil escribir un poco de Java. – Bill