Jestem nowicjuszem w clojure i Java.Dostęp do pól Java dynamicznie w Clojure?
W celu uzyskania dostępu do pola Java w Clojure można zrobić:
Classname/staticField
który jest tak samo jak
(. Classname staticField)
(poprawcie mnie jeśli się mylę)
Jak mogę uzyskać dostęp do pola statycznego, gdy nazwa pola jest przechowywana w zmiennej? tj .:
(let [key-stroke 'VK_L
key-event KeyEvent/key-stroke])
Chcę key-stroke
być oceniane pod symbolem VK_L przed próbuje uzyskać dostęp do pola.
Oprócz odpowiedzi skuro, można patrzeć na odbicie Java API. Zobacz sekcję "Zmiana wartości pól" na stronie http://java.sun.com/developer/technicalArticles/ALT/Reflection/. – gatoatigrado
Aby wyjaśnić nieco więcej: Dostęp do pól lub wywołań metod musi być skompilowany w kodzie bajtowym. Dlatego nie można ich skonstruować za pomocą informacji o środowisku wykonawczym. Jeśli tego potrzebujesz, będziesz musiał użyć refleksji. (patrz odpowiedź Joosta) – kotarak