クリエータ関数を記述し、どのようなメッセージアクターが受信できるかを定義し、アクター内のこの種のメッセージにマッチさせることを目標としています。 だから私は、私は非常に単純なコードを持ってジェネリックパターンマッチングとタイプ消去
(私は関数を作成し呼び出す場合にのみ、このタイプを知っている)私の期待のメッセージがタイプXであることを指定したい:
import akka.actor.Actor.Receive
def create[X]():Receive = {
case msg:X =>
}
このコードは私に次のエラーを与えます: "抽象的な型のパターンXは消し去られるのでチェックが外されている"
タイプの消去は分かっていますが、この問題の解決策は見つかりません。あなたのメッセージタイプは、型消去の影響を受けて自身であるならば、これは失敗することを
def create[X](implicit tag: ClassTag[X]): Receive = {
case msg if msg.getClass == tag.runtimeClass =>
}
注意かかわら:
あなたはhttp://daily-scala.blogspot.ca/2010/01/overcoming-type-erasure-in-matching-1.htmlを見ましたか? –