반응형
원문: Effective Scala - Java compatibility
우리는 Java에서 사용하기 위해 Scala 코드를 작성할 때 Java 입장에서 코드의 사용이 관용적으로 여겨지도록 작성합니다. 대부분의 경우 이를 위해서 특별한 노력이 필요하지 않습니다. 클래스와 순수한 트레이트는 Java에서 대응되는 것과 완전히 동일합니다. 하지만 때로는 별도의 Java API를 제공해야 할 때도 있습니다. 당신이 작성한 라이브러리가 Java에서 어떠한 느낌인지 확인하기 위한 좋은 방법은 Java로 단위 테스트를 작성하는 것입니다. 이를 통해 Java 입장에서 보여지는 당신의 라이브러리가 시간이 지나도 안정적으로 유지되도록 보장할 수 있습니다. Scala 컴파일러는 시간이 지나면서 변동이 생기므로 Java에 대한 안전성이 보장되지 않을 수도 있기 때문입니다.
구현이 포함된 트레이트는 Java에서 직접 사용할 수 없습니다. 대신 추상 클래스가 해당 트레이트를 상속받게 만드세요.
// 기본 구현이 포함된 트레이트는 자바에서 직접 사용할 수 없습니다
trait Animal {
def eat(other: Animal)
def eatMany(animals: Seq[Animal]) = animals foreach(eat(_))
}
// 추상 클래스가 기본 구현이 포함된 트레이트를 상속받게 하세요
abstract class JavaAnimal extends Animal
반응형