Scala에서 Scala클래스 사용하기
Scala 스크립트내에서 Scala클래스를 사용할때는 컴파일되지 않은 상태에서도 사용이 가능하며 클래스명.scala 혹은 클래스명.class 파일에서 해당클래스를 찾을 수 있으며 이미 찾은 파일내에 다른 클래스가 있어도 사용이 가능합니다. 클래스파일이 같은 폴더에 있지 않다면 scala -sourcepath 폴더명:. 스칼라파일명.scala 처럼 소스파일의 위치를 지정해서 사용이 가능합니다.
스칼라스크립트가 아닌 클래스내에서 다른 클래스를 사용하려면 해당 클래스는 반드시 컴파일이 되어 있어야 하고 scalac -d . -classpath 클래스파일위치 스칼라파일명.scala 명령을 통해서 컴파일 할 수 있습니다. ( -d는 캄파일된 파일을 둘 위치를 지정합니다.)
Scala에서 Java클래스 사용하기
Scala에서 JDK의 클래스를 사용할 때는 java.lang는 그냥 사용하고 그 외에는 import하면 사용할 수 있습니다. 그외의 자바클래스에 대해서도 import로 사용하고 컴파일(scalac)과 실행(scala)시에 -classpath 로 클래스파일의 디렉토리를 지정해서 사용할 수 있습니다.
Java에서 Scala클래스 사용하기
자바에서 스칼라클래스를 사용할 때는 scala코드는 scalac로 자바코드는 javac로 컴파일 한 후 java -classpath \ /스칼라SDK경로/lib/scala-library.jar:classes 와 같이 간단히 클래스패스에 scala-library.jar를 추가하여 자바파일 로 실행할 수 있습니다. 하지만 클로저같이 자바에서 지원되지 않는 기능을 사용할 메서드는 사용할 수 없습니다. Trait의 경우에는 구현부가 없는 Trait는 Interface와 동일하기 때문에 Java에서도 인터페이스처럼 사용할 수 있지만 구현부가 섞여있는 Trait의 경우에는 사용상에 어려움이 있습니다.
싱클톤 오브젝트와 컴페니언 오브젝트
Scala는 Singleton Object나 Companion Objec를 Java에서는 static메서드를 사용하는 Singleton Class(클래스명 뒤에 $ 심폴을 붙힌 클래스로 objext Example는 Example$ 클래스가 됩니다.)로 컴파일 하기 때문에 Java에서는 Static메서드를 사용하는 것과 동일하게 사용할 수 있습니다. 컴패니언 오브젝트를 위해서는 클래스명$ 사용해서 접근하면 컴페니언 클래스에 대해서는 클래스명을 그대로 사용하면 됩니다.
예외의 경우에는 스칼라는 throws 절이 없고 메서드에서 예외를 바로 던질 수 있기 때문에 Java에서 이러한 클래스를 사용하려면 오류가 생기기 때문에 이러한 클래스는 스칼라에서 @thorws을 사용해서 이 문제를 피하여야 합니다.
Comments