2024 Clojure状况调查问卷!中分享您的想法。

欢迎!请查看关于页面以了解更多关于如何使用此功能的信息。

0
Java互操作

我是Clojure的新手。我想要调用一个在Java中定义方法重载的Java方法,其中一个没有参数,另一个有一个参数。我想要调用不带参数的方法,但Clojure调用有一个参数的方法并抛出IllegalArgumentException。

我在Clojure中如何调用不带参数的Java方法?

1回答

+1
user=> (vec (.getBytes "ᵶ" "latin1"))
[63]
user=> (vec (.getBytes "ᵶ"))
[-31 -75 -74]
user=>

如果您没有传递参数,Clojure将调用不带参数的方法。

谢谢。但在我的情况下,不幸的是,方法调用没有选择正确的方法。我认为这些方法定义在一个接口中。我向一个用[]作为参数的dummy调用,它工作了。
JVM对参数数量非常严格。

你不能用错误的参数数量调用方法,所以如果你添加了一个参数现在可以工作了,这意味着你在调用不同的方法(方法的参数数量是方法标识的一部分)。

其他一些因素也可能影响方法选择,比如具有正确参数数量的方法不可见(不是公开的)。
...