Мне было интересно, есть ли у кого-нибудь опыт создания иерархии типа с параметризованным типом? Я вполне уверен, что это возможно в результате псевдооединения scala пакетов & статических объектов.Иерархии типа с параметризованным типом
Специфический случай использования я имею в виду, это параметризующее тип ID злоумышленником рамках приложения, так что вы можете использовать ваш выбор int
/long
/java.util.UUID
/BSONId
/что угодно. Рассмотрим в качестве приблизительного примера:
package foolib.generic
trait GenEntity[I] { def id: I }
trait GenRepository[I] { def getById(id: I): GenEntity[I] }
trait FooTaxonomy[I] {
type Entity = GenEntity[I]
type Repository = GenRepository[I]
object subpackage extends generic.subpackage.SubpackageTaxonomy[I]
}
Затем вы должны настроить иерархию для использования в проекте что-то вроде:
package object myprj {
object foolib extends foolib.generic.FooTaxonomy[java.util.UUID]
// Whee!
val someEntity = new myprj.foolib.Entity(java.util.UUID.randomUUID())
}
Есть ли какие-либо причины, это невероятно плохая идея? Любые подводные камни/etc, о которых я должен знать?
Может это я, но я не могу понять, что вы пытаетесь достичь. – Jatin