在 scala 中使用 case class 的通用枚举
Generic enum using case class in scala
我创建了以下枚举对象
sealed trait MsgMapping[T] {def mycode: T;}
object Type1 {
sealed trait msg[Int] extends MsgMapping[Int]
case object A extends msg[Int]{val myCode = 0;}
case object B extends msg[Int]{val myCode = 1;}
}
object Type2 {
sealed trait msgtype[String] extends MsgMapping[String]
case object C extends msgtype[String]{val myCode = "xyz";}
case object D extends msgtype[String]{val myCode = "def";}
}
我想创建一个通用案例 class 可以排除任何类型的 MessageMapping ,它可以是 Integer/String 或任何数据类型
但是这一行给出了预期类型的错误。
case class EumType(valueType: MsgMapping [T])
以下作品
case class EumType1(valueType: MsgMapping [Int])
case class EumType2(valueType: MsgMapping [String])
case class TestEnum(value:EumType1)
case class Test(val:TestEnum)
但我不想创建 EumType1 和 EumType2 。任何人都可以帮助我为此创建一个通用代码
更新
按照建议
case class EnumType[T](valueType: MsgMapping[T])
case class TestEnum(value:EnumType[T])
It will throw compile error since it expects type
here but i want to pass the type on this line
case class Test(val:TestEnum) ,whether it is Type1 /Type2
尝试使用存在类型:
case class EumType(valueType: MessageMapping [_])
我创建了以下枚举对象
sealed trait MsgMapping[T] {def mycode: T;}
object Type1 {
sealed trait msg[Int] extends MsgMapping[Int]
case object A extends msg[Int]{val myCode = 0;}
case object B extends msg[Int]{val myCode = 1;}
}
object Type2 {
sealed trait msgtype[String] extends MsgMapping[String]
case object C extends msgtype[String]{val myCode = "xyz";}
case object D extends msgtype[String]{val myCode = "def";}
}
我想创建一个通用案例 class 可以排除任何类型的 MessageMapping ,它可以是 Integer/String 或任何数据类型
但是这一行给出了预期类型的错误。
case class EumType(valueType: MsgMapping [T])
以下作品
case class EumType1(valueType: MsgMapping [Int])
case class EumType2(valueType: MsgMapping [String])
case class TestEnum(value:EumType1)
case class Test(val:TestEnum)
但我不想创建 EumType1 和 EumType2 。任何人都可以帮助我为此创建一个通用代码
更新
按照建议
case class EnumType[T](valueType: MsgMapping[T])
case class TestEnum(value:EnumType[T])
It will throw compile error since it expects type
here but i want to pass the type on this line
case class Test(val:TestEnum) ,whether it is Type1 /Type2
尝试使用存在类型:
case class EumType(valueType: MessageMapping [_])