Код: Выделить всё
public class BaseClass {
public Something function(int... args){ ... }
}
< /code>
Обычно это было бы переопределено в Scala с помощью синтаксиса Scala varargs: < /p>
class TypicalScalaVarargsOverrideClass extends BaseClass {
override def function(args: Int*): Something = { ... }
}
Код: Выделить всё
// no args
no suitable method found for function(no arguments)
method TypicalScalaVarargsOverrideClass.function(scala.collection.Seq) is not applicable
(actual and formal argument lists differ in length)
method TypicalScalaVarargsOverrideClass.function(int[]) is not applicable
(actual and formal argument lists differ in length)
// 1 arg
no suitable method found for function(int)
method TypicalScalaVarargsOverrideClass.function(scala.collection.Seq) is not applicable
(argument mismatch; int cannot be converted to scala.collection.Seq)
method TypicalScalaVarargsOverrideClass.function(int[]) is not applicable
(argument mismatch; int cannot be converted to int[])
// 3 args
no suitable method found for function(int,int,int)
method TypicalScalaVarargsOverrideClass.function(scala.collection.Seq) is not applicable
(actual and formal argument lists differ in length)
method TypicalScalaVarargsOverrideClass.function(int[]) is not applicable
(actual and formal argument lists differ in length)
class UsingVarargsAnnotationClass extends BaseClass {
@varargs
override def function(args: Int*): Something = { ... }
}
< /code>
Но это приводит к ошибке двойного определения, поскольку теперь она сталкивается с исходным определением функции: < /p>
double definition:
override def function(args: Int*): Something at line 1 and
override def function(args: Array[Int]): Something at line 3
have same type after erasure: (args: Array[Int])Something
override def function(args: Int*): Something = {
< /code>
Так есть ли способ, в Scala (в частности 2,12 или 2.13), чтобы определить переопределение метода Java varargs, который все еще вызывает из Java? (Есть несколько способов сделать это).
Подробнее здесь: https://stackoverflow.com/questions/796 ... callable-f