Clojure: Attaching annotations to AOT-compiled methods
我有一个用Clojure编写的BaseX Java接口模块。该接口提供了许多注释,可用于确定如何调用和优化方法。但是,我很难将它们实际附加到生成的类上:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | (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注释-静默丢弃了
1 2 3 4 | >>> 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中发生的,而Clojure 1.2应该支持AOT编译方法中的注释。因此,这大概是使用错误-但是我应该做些什么?
除了
1 2 | ^{org.basex.query.QueryModule$Deterministic {}, org.basex.query.QueryModule$Requires org.basex.query.QueryModule$Permission/NONE} |
请注意,相同限制不适用于
将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | (ns net.dyfis.svnkit_wrapper.SvnWrapper (:import (org.basex.query QueryModule QueryModule$Requires QueryModule$Permission QueryModule$Deterministic))) (gen-class :name com.indeed.svnkit_wrapper.SvnWrapper :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 long] java.lang.String] ]) |