使用字符串数组调用Clojure中的重载Java方法

时间:2015-06-22 06:53:47

标签: java clojure overloading clojure-java-interop

鉴于此类和重载方法:

public class MyClass {
    public MyClass(){}
    public String foo(string a, boolean b) { return "bool: " + i; }
    public String foo(string a, String... values) { return "strarray: " + values; }
}

我们想用第二个参数调用foo。我们尝试了许多带有类型提示的迭代,但我仍然无法调用strarray方法。

这是我们尝试into-array时得到的数组:

IllegalArgumentException No matching method found: setParam for class xxx  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)

如何在clojure中做到这一点?

2 个答案:

答案 0 :(得分:1)

电话会看起来像这样:

(.foo (MyClass.) 
      "first argument" 
      (into-array String  ["second" "and third"]))

答案 1 :(得分:-1)

您可以先串联字符串并返回相同的

public class Demo {
    public String foo(String... values) {
        String value = "";
        for (int i = 0; i < values.length; i++) {
            value += values[i]+" ";
        }
        return "strarray: " + value;
    }
    public static void main(String[] args) {
        Demo demo = new Demo();
        System.out.println(demo.foo("ABCD", "PQRS","XYZW"));
    }
}

<强>输出: strarray:ABCD PQRS XYZW