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

欢迎!请查阅关于页面获取更多关于这个网站的详细信息。

0
Java互操作

我是Clojure的新手。我想调用一个Java方法,这个方法是重载的,一个没有参数,另一个有一个参数。我想调用没有参数的方法,但Clojure调用了带有一个参数的方法,并抛出了IllegalArgumentException。

如何在Clojure中调用无参数的Java方法?

1 个回答

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

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

谢谢。但是,在我这个情况下,不幸的是,方法调用没有选择正确的方法。我认为这些方法是在一个接口中定义的。我用一个空列表[]作为dummy的参数进行了调用,并且它工作了。
by
Java虚拟机对参数数量非常严格。

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

还有其他一些因素会影响方法选择,比如如果带有正确参数数量的方法不可见(非公共的)。
...