Soy un novato en clojure y java.¿Tiene acceso a los campos Java dinámicamente en Clojure?
Con el fin de acceder a un campo de Java en Clojure que puede hacer:
Classname/staticField
cual es lo mismo que
(. Classname staticField)
(corríjanme si me equivoco)
¿Cómo puedo acceder a un campo estático cuando el nombre del campo se mantiene dentro de una variable? es decir .:
(let [key-stroke 'VK_L
key-event KeyEvent/key-stroke])
Quiero key-stroke
a ser evaluados en el símbolo VK_L antes de que intenta acceder al campo.
Además de la respuesta de skuro, se puede ver en la API de reflexión de Java. Consulte la sección "Cambio de valores de los campos" en http://java.sun.com/developer/technicalArticles/ALT/Reflection/. – gatoatigrado
Para explicar un poco más: El acceso de los campos o las llamadas a los métodos deben compilarse en el código de bytes. Es por eso que no puedes construirlos con información de tiempo de ejecución. Si lo necesitas, tendrás que usar el reflejo. (ver la respuesta de Joost) – kotarak