2014-10-21 3 views
3

В моем java-коде я вызываю метод из класса, который определен в Scala, и я хочу использовать один из его методов в java. Вот как я это называю, и все работает отлично.Использование объекта scala внутри java?

Seq<SomeObjectType> variableName = ScalaClass.MethodInTheScalaClass(); 

Я могу назвать эту функцию в Java в таком виде, но так как я называю этот метод из скомпилированного пакета, я не могу увидеть, что это происходит (и, следовательно, я не могу изменить его).

Проблема в том, что я не знаю, как перебирать «variableName» в java (поскольку Seq является типом scala).

Как я могу перебирать переменнуюName или преобразовывать ее в объект Java (например, List)?

ответ

3

Попробуйте это:

java.util.List<SomeObjectType> res = 
    scala.collection.JavaConverters$.MODULE$.seqAsJavaListConverter(variableName).asJava(); 

Вы можете получить список преобразователей в JavaConverters documentation.

Вы должны использовать JavaConverters$.MODULE$, чтобы получить JavaConverters объект от Java.

+0

Спасибо! Итак, если у меня есть только java (нет scala), все должно работать отлично; правильно? – Daniel

+1

@ Daniel: вам понадобится 'scala' lib, но вам все равно понадобится использовать ScalaClass. Если у вас есть много таких методов scala для использования в коде java, я бы рекомендовал вам создать java-дружественную оболочку ScalaClassJavaApi', используя 'scala' - вы можете использовать scala в любом проекте java maven, используя [scala- Maven-плагин] (http://davidb.github.io/scala-maven-plugin/example_java.html). – senia

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