Мне нужно каким-то образом пометить определенные функции Clojure как «специальные», чтобы код Java мог распознавать их как таковые с помощью отражения. Я пытался добавить аннотацию к функции, но, видимо, это не поддерживается. Я пытался reify
расширить интерфейс IFn
(чтобы код Java мог распознавать объект функции), но это бесполезно, потому что Clojure не использует материализованный метод напрямую в качестве кода, реализующего invoke
, а использует косвенный вызов объекта-функции. Afunction
, который фактически реализует метод (мне нужно пометить фактический метод invoke
фактическим кодом функции).
Есть идеи?
РЕДАКТИРОВАТЬ: даже пометка способом, к которому можно получить доступ с помощью библиотеки ASM (а не с обычным отражением), будет в порядке, но мне нужно как-то пометить фактический объект AFunction
или метод invoke
. Кроме того, я не могу получить доступ к фактическому объекту AFunction
— мне нужно, чтобы тег был виден в классе.