我有一个用 Clojure 编写的BaseX Java 接口模块。该接口提供了许多注释,可用于确定如何调用和优化方法;但是,我无法让这些实际附加到生成的类:
(ns net.dyfis.svnkit_wrapper.SvnWrapper
(:import (org.basex.query QueryModule
QueryModule$Requires
QueryModule$Permission
QueryModule$Deterministic))
(:gen-class
:main false
:extends org.basex.query.QueryModule
:methods [
^{:static true}
[^{QueryModule$Requires QueryModule$Permission/NONE,
Deprecated {}}
cat [java.lang.String] java.lang.String]
^{:static true}
[^{QueryModule$Deterministic {},
QueryModule$Requires QueryModule$Permission/NONE}
catRev [java.lang.String int] java.lang.String]]))
但是,只有 Deprecated 注释被附加—— QueryModule$Requires
and QueryModule$Deterministic
注释被默默地丢弃:
>>> cat
public static java.lang.String net.dyfis.svnkit_wrapper.SvnWrapper.cat(java.lang.String)
>>> cat.getAnnotations()
array(java.lang.annotation.Annotation,[@java.lang.Deprecated()])
Clojure 1.4.0-beta6 会发生这种情况,而对 AOT 编译方法中的注释的支持应该是从 Clojure 1.2 开始的。因此,这可能是一个使用错误——但我应该做些什么不同的事情呢?