1

我有一个班级

class FooId extends Identifier {
  val prefix = "foo"
}
class BarId extends Identifier {
  val prefix = "bar"
}

whereprefix总是一个“静态”值。(实际上,此刻,该值在伴随类中重复。)

我想对这些进行抽象,以便能够轻松地序列化和反序列化任何类型的标识符。我想写一个这样的函数:

val idFromString: PartialFunction[String, T <: Identifier] = {
  case s if s.startsWith(<T.prefix>) =>
      new T(Integer.parseInt(s.drop(<T.prefix>.length)))
}

但我不知道应该用什么代替<T.prefix>.

4

1 回答 1

0

你需要def prefix : String在你的标识符中添加一个方法Trait

因此,该方法将被子类中的 val 覆盖。

于 2013-11-06T08:21:31.003 回答