2016-08-15 1 views
3

Я получаю следующее сообщение об ошибке в Скале:Как решить неоднозначную ссылку на перегруженное определение в Скале

ambiguous reference to overloaded definition, 
both method register in trait Configurable of type (x$1: Any, x$2: <repeated...>[Class[_]])javax.ws.rs.client.Client 
and method register in trait Configurable of type (x$1: Any) javax.ws.rs.client.Client 
match argument types (Object) 

[ERROR]  client.register(ClientFilter.getFilter().asInstanceOf[Object]) 

Если не asInstance [Object] сообщить компилятору, какая версию клиента регистра джерси использовать? Вот код:

val client: Client = 
     ClientBuilder.newBuilder() 
     .build(); 
client.register(ClientFilter.getFilter().asInstanceOf[Object]) 

ClientFilter.getFilter() является экземпляром ClientRequestFilter

+1

Вы попадаете https://issues.scala-lang.org/browse/SI-2991 –

+3

Одним из обходных путей может быть также использование метода без varargs, такого как 'public C register (Object component, int priority), 'from' javax.ws.rs.core.Configurable'. Как этот '.register (новый SomeFilter, 1)' – rpozarickij

+0

@rpozarickij Еще лучше. –

ответ

3

Вам нужен класс Java, чтобы сделать отправку для вас, из-за this issue не получаю решен в пользу моего PR , который добавил -Yno-java-tupling, чтобы делать то, что вы ожидаете. Надеемся, что временные решения будут временными и не потребуются после того, как разрешение перегрузки предшествует автонастройке, как описано в комментарии к билету.

Смежные вопросы