Несмотря на полезный совет об использовании Java-интерфейса для обеспечения «совместимости» компилятора Scala, я просто не мог заставить свой код работать. В конце концов меня осенило, что методы были объявлены для объекта Scala , что означает, что они на самом деле являются статическими, и вы не можете указать статические методы в интерфейсе, поэтому компилятор просто игнорировал тот факт, что Объект реализовал интерфейс. К счастью для меня, есть обходной путь. Вместо того, чтобы вызывать статический метод непосредственно из Java, вот так:
CLASS.method(x,y,z)
Вы должны назвать это так:
CLASS$.MODULE$.method(x,y,z)
Это означает, что вы фактически обращаетесь к одноэлементному объекту как к экземпляру, на который ссылается статическое поле, и, поскольку он является экземпляром и реализует интерфейс Java, там компилятор выполняет свою работу должным образом и реализует метод varargs, так что Java может вызывать его как varargs.
Лично я считаю, что это следует рассматривать как ошибку компилятора Scala.