请在2024 Clojure调查问卷中分享您的看法!

欢迎!请参阅关于页面以了解更多关于这如何工作的信息。

+3
Java交互

我正在尝试使用一个使用Java类和方法的注解的Java库,所以我通过它传递带有注解方法的deftypes。其中一些注解需要使用整型参数,看起来在Clojure中做这件事并没有方便的方法。我所尝试的代码类似于以下这样

(deftype SomeType []
  (^{Retention RetentionPolicy/RUNTIME
     SomeAnnotationClass {:order 1} }
   someMethod [_]...)) 

:order 1部分引发了异常

发现注解元素存在错误的数据类型 ... (发现数据类型为java.lang.Long[1])

这是因为Java库期望:order有java.lang.Integer类型的值,但Clojure创建的是java.lang.Long。如果我用(int 1)而不是1,我会得到另一个异常。

我在clojurians Slack上寻求帮助,有人建议我用#java.lang.Integer[1]而不是简单地使用1。这成功了,但有一个更直观的方法就好了。

1 答案

0
...