2024 Clojure状态调查!中分享你的想法。

欢迎!请查看关于页面以获取更多关于此页如何工作的信息。

+3
Java互操作

我正在尝试使用一个使用Java类和方法的注解的Java库,所以我传递给它带有注解方法的deftype。其中一些注解需要使用整型参数,这在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
...