У меня есть два класса с некоторыми членами данных, как это:Scala, как восстановить тип дженерик в Еогеаспе
class MyInfo {
private val myId: String
private val time: DateTime
private val solution: Long
private val banner: Int
}
Class HisInfo {
private val id: String
private val solution: Long
private val banner: Int
}
Как вы можете видеть, что эти два класса разделяет два члена, и в моем реальном проекте они разделяют больше. Мне нужно, чтобы сохранить их в HBase и разработал класс вроде этого:
sealed trait Element[T] {
def serialize(value: T)(implicit val helper: Helper[T]): Array[Byte]
def deserialize(bytes: Array[Byte])(implicit val helper: Helper[T]): T
}
case object LongElement extends Element[Long] {...}
case object IntElement extends Element[Int] {...}
class Info {
protected val data: Map[Element[_], Any] = new mutable.Map[Element[_], Any]()
}
class MyInfo extends Info {
val elements = List(LongElement, IntLement)
def saveToHBase = {
elements.foreach { e =>
val v = e.serialize(data(e))
// do sth with v
}
}
На самом деле я определил реализацию Helper [Int] и Helper [Long], но компилятор жалуется, что не может найти неявное значение параметр Помощник [_1]. Может кто-нибудь помочь мне в разработке этих классов?
Определили ты ' Помощник [Int] и 'Помощник [Long]' как неявные значения, доступные в области, где вы называете 'e.serialize'? –
Существует ли бесконечно уникальное общее поле каждого типа с соответствующим «Помощником» или нужна дополнительная идентификация по имени? – Odomontois