當我們寫的Scala代碼被Java調用時,我們要確保從Java來用仍然習慣。這常常不需要額外的努力——class和純的trait等價于Java的中的對應類型 —— 但有時需要提供獨立的Java API。一種感受你的庫中的Java API好的方式是用Java寫單元測試(只是為了兼容性);這也確保了你的庫中的Java視圖保持穩定,在這一點上不會隨著時間因Scala編譯器的波動而影響。
包含部分實現的Trait不能直接被Java使用: 改為 extends 一個抽象類
~~~
// 不能直接被java使用
trait Animal {
def eat(other: Animal)
def eatMany(animals: Seq[Animal) = animals foreach(eat(_))
}
// 改為這樣:
abstract class JavaAnimal extends Animal
~~~