2014-10-21 4 views
3

내 자바 코드에서 스칼라에 정의 된 클래스에서 메서드를 호출하고 있는데, 자바에서 그 메서드 중 하나를 사용하고 싶다. 여기에 내가 어떻게 부르는 지 잘 작동한다.자바 내부에서 스칼라 객체 사용?

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

나는이 양식에 자바에서이 함수를 호출 할 수 있습니다,하지만 난 컴파일 된 패키지에서이 메서드를 호출하고 있기 때문에, 나는 계속 (그리고 나는 그것을 변경할 수 없습니다) 무엇을 볼 수 없습니다.

이제 문제는 자바에서 "variableName"을 반복하는 방법을 알지 못합니다 (Seq는 스칼라 유형이므로).

어떻게 variableName을 반복 실행하거나 Java 객체 (예 : List)로 변환 할 수 있습니까?

답변

3

이 시도 :

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

을 당신은 JavaConverters documentation에서 컨버터의 목록을 얻을 수 있습니다.

JavaConverters$.MODULE$을 사용하면 JavaJavaConverters 개체를 가져와야합니다.

+0

고맙습니다! 그래서, 만약 java 만 (scala가 없다면) 모든 것이 완벽하게 작동해야합니다. 권리? – Daniel

+1

@Daniel :'scala' 라이브러리가 필요 하겠지만'ScalaClass'를 사용하기 위해서는 어쨌든 필요합니다. 혹시'java' 코드에서 사용할'scala' 메소드가 충분하다면'scala'를 사용하여 자바 친화적 인'ScalaClassJavaApi' 래퍼를 만드는 것을 추천합니다 - scala를 사용하는 모든 maven 자바 프로젝트에서 scala를 사용할 수 있습니다. maven-plugin] (http://davidb.github.io/scala-maven-plugin/example_java.html)을 참조하십시오. – senia