Я работаю над java lib в scala.Scala iterable и java iterable
я получил что-то вроде этого:
def myFunc(): Thing[Iterable[T]] = {
// call java lib for the result
...
javaResult // Problem: it's Thing[java.lang.Iterable[T]]
}
Таким образом, вы видите проблема заключается в том, что возвращаемый тип Java вещь Thing[java.lang.Iterable[T]]
. Я попытался импортировать scala.collection.JavaConverters._
, но это не сработает. Обратите внимание, что у меня нет доступа к java lib, и я не могу извлечь этот итерабель, а затем восстановить объект Thing с помощью scala.
Я могу аннотировать возвращаемый тип как java.lang.Iterable
, но поскольку scala и java предназначены для совместной работы, мне интересно, есть ли способ решить эту проблему элегантно?
Вы не можете решить эту проблему без каких-либо подробностей о 'Thing'. Если это монада (или монад-подобная структура), просто назовите 'map (_. AsScala)' на нем. – gzm0
Nitpick: Scala предназначена для работы с Java, а не наоборот;) –