を変換し、それはある特定のどのメッセージを決定するためにproperties.get(「タイプ」)を使用します。は私がように戻って、キューから取得する非常に一般的なメッセージオブジェクトを持つクラス
sealed trait BaseMessage
case class LoginMessage(userId: Int, ....) extends BaseMessage
case class RegisterMessage(email: String, firstName: String, ....) extends BaseMessage
は今、私のコードで私は多くの場所で特定のメッセージに、一般的なメッセージから変換する必要があり、私はこれを作成したいです次のような単一の場所で:
私はScalaではこれはあまり面倒な作りにしていますどのようなオプションval m = Message(....)
val myMessage = m.properties.get("type") match {
case Some("login") => LoginMessage(m.properties("userID"), ...)
case ...
}
:
は、現在、私のような何かをやっていますか?
[Map [String、String] 'を使用して、スターターの任意のプロパティーを格納しません。その情報を回復することは容易ではありません。 –
あなたがタイプセーフなままにしたいなら、シェイプレスはおそらく助けてくれるでしょう – LMeyer
@MichaelZajacはメッセージキューシステムからのクラスです。変更できません。 – Blankman