私はクラスの家族を持っています
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>
。