Разрешение неоднозначных неявных преобразований в Scala - PullRequest
7 голосов
/ 05 августа 2011

Любой способ отказаться от использования asJavaIterable в следующем?Я знаю, что могу просто прописать это конкретное имя функции, но мне интересно, могу ли я просто указать тип, который я хочу.Мне также любопытно, почему asJavaIterable не имеет приоритета над asJavaCollection.

scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._

scala> Iterable(0,1):java.lang.Iterable[Int]
<console>:11: error: type mismatch;
 found   : Iterable[Int]
 required: java.lang.Iterable[Int]
Note that implicit conversions are not applicable because they are ambiguous:
 both method asJavaIterable in object JavaConversions of type [A](i: Iterable[A])java.lang.Iterable[A]
 and method asJavaCollection in object JavaConversions of type [A](i: Iterable[A])java.util.Collection[A]
 are possible conversion functions from Iterable[Int] to java.lang.Iterable[Int]
       Iterable(0,1):java.lang.Iterable[Int]
               ^

1 Ответ

12 голосов
/ 05 августа 2011

Можно ограничить объем импорта, чтобы asJavaCollection не учитывалось:

import scala.collection.JavaConversions.{asJavaCollection=>_,_}

Здесь написано: «импортировать все элементы JavaConversions, кроме asJavaCollection».

Однако, я думаю, что предпочтительнее импортировать JavaConverters и сделать ваши преобразования явными.

import scala.collection.JavaConverters._

Iterable(0,1).asJava
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...