我尋找,需要一個功能FUNC的方法正確的簽名和參數ARG,複製他們在網絡上的遠程計算機並返回結果。目前,該簽名是這樣的:序列化和AnyVal
def invokeRemote[A,B](address: String, func: A => B, arg: A): B
這樣做的問題是,該方法將拋出一個異常NotSerializable如果參數不是序列化或Java的基本類型之一。
我想出了以下解決方案,以趕在編譯時這個錯誤...
type Func = (A => B) with Serializable
def invokeRemote[A <: Serializable, B <: Serializable](address: String, func: Func, arg: A): B
...但現在是不可能的了傳遞類型的參數AnyVal像詮釋 ,浮動或雙不明確實現Serializable接口。
方法簽名應該是什麼樣子等,使得它僅接受序列化對象或類型AnyVal的對象作爲參數?
哇,謝謝你這個非常好的解決方案。看到Scala編譯器能夠做什麼:) – gruenewa 2011-05-14 16:22:53