Encoder[E]
是否可以为任何子类型E
(例如,在is的代码实例中E
扩展GeneratedEnum
类的任何子类型)定义和传递到where是包含as 字段的某个案例类。E
Color
AvroSchema[C]
C
E
case class Color(value: Int) extends scalapb.GeneratedEnum // ... it has .name field
case class MyCaseClassWithEnum(color: Color) // ...
implicit def enumEncoder[E <: scalapb.GeneratedEnum]: Encoder[E] = new Encoder[E] {
override def encode(e: E, schema: Schema, fieldMapper: FieldMapper): AnyRef = e.name
}
val actualSchema = AvroSchema[MyCaseClassWithEnum]
完整的源代码在这里
基本上希望 like 的任何子类型实例都GeneratedEnum
编码Color
为String
.