2015-01-04 7 views
1

Я работаю над 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 предназначены для совместной работы, мне интересно, есть ли способ решить эту проблему элегантно?

+0

Вы не можете решить эту проблему без каких-либо подробностей о 'Thing'. Если это монада (или монад-подобная структура), просто назовите 'map (_. AsScala)' на нем. – gzm0

+0

Nitpick: Scala предназначена для работы с Java, а не наоборот;) –

ответ

0

«Предназначен для совместной работы» означает именно то, что вы можете вернуть Thing[java.lang.Iterable[T]]. Кажется, это ваш единственный вариант.