Как я могу динамически искать статический член класса в Clojure? - PullRequest
8 голосов
/ 21 декабря 2009

В Clojure я могу посмотреть статический член класса Java (например, поле, содержащее константу), например:

ClassName/CONSTANT_FIELD

Как я могу получить доступ к члену, когда знаю только его имя во время выполнения? Примером может быть цикл по последовательности имен полей и получение всех значений полей.

Я хотел бы сделать что-то вроде этого (этот код, конечно, не работает):

(let [c "CONSTANT_FIELD"]
  ClassName/c)

Какой лучший способ сделать это?

1 Ответ

13 голосов
/ 21 декабря 2009

Вы можете использовать API отражения Java.

(let [c "CONSTANT_FIELD"]
  (.get (.getField ClassName c) nil))

Ноль здесь, потому что вы получаете статическое поле, а не поле члена определенного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...