Scala-Java interop,方法(数组和varargs)重载的问题]]

问题描述 投票:2回答:1

我有一个Scala类,其中有两个重载的set方法,一个带有Array参数,另一个带有varargs。我想从Java端调用这些方法,由于重载和/或装箱/拆箱,我遇到了一些问题。如果有人可以解释我所面临的问题背后的原因和/或建议解决方法,这将很有帮助。

Scala类

class Sample {
  def set[S](values: Array[S]): Unit = {
    println("Array overload")
  }


  @varargs
  def set[S](value: S, values: S*): Unit = {
    println("Varargs overload")
  }
}

从Java拨打电话

 public static void main(String[] args) {
        Sample sample = new Sample();

        Boolean[] array = {true, false};
        Boolean boxed = true;
        boolean primitive = true;

        // works for array
        sample.set(array); // should call Array-overload, calls Array-overload


        // doesn't work for single element varargs
        sample.set(boxed); // should call varargs-overload, calls Array-overload instead
        sample.set(primitive); // should call varargs-overload, calls Array-overload instead

        // works for multiple varargs
        sample.set(boxed, boxed); // should call varargs-overload, varargs-overload is called
        sample.set(primitive, primitive); // should call varargs-overload, varargs-overload is called


    }

我有一个Scala类,它有两个重载的set方法,一个带有Array参数,另一个带有varargs。我想从Java端调用这些方法,由于重载,我面临一些问题...

java scala overloading variadic-functions scala-java-interop
1个回答
1
投票

我猜是因为Scala产生了

© www.soinside.com 2019 - 2024. All rights reserved.