存在java方法:
public class JavaApi {
public static void testArrayObject(Object... args) {
for (Object arg : args) {
System.out.printf("input param is:%s%n", arg);
}
}
}
scala中如果如下方式调用:
case class Sample() {
override def toString: String = this.getClass.getName
}
val arryObj: Array[Object] = Array(classOf[Sample], classOf[Sample])
JavaApi.testArrayObject(arryObj)
只会打印一个Object:
input param is:[Ljava.lang.Object;@2893de87
debug会发现java接口中得到的是一个
这是不符我们预期的。
解决办法:
scala调用方式修改为:
val arryObj: Array[Object] = Array(classOf[Sample], classOf[Sample])
JavaApi.testArrayObject(arryObj:_*)
测试输出如下:
input param is:class com.fighter.scalajavaswitch.Sample
input param is:class com.fighter.scalajavaswitch.Sample
问题解决!
具体可参考scala重复参数。