2017-08-07 83 views
1

我有以下类如何基于依赖类型创建通用约束?

trait Identifiable 


case class Address extends Identifiable 


abstract class AbstractTable[T] { 
    type TableElementType 
} 


class TableQuery[E <: AbstractTable[_]] 


class Addresses(tag: Tag) extends Table[Address](tag, "addresses") 

如何使

abstract class AbstractOptionBaseRepsitory[T <: AbstractTable[_]] 

只接受T其中T#TableElementTypeIdentifiable

回答

1

一个子类如何

abstract class IdentifiableAbstractTable[T] extends AbstractTable[T] { 
    type TableElementType <: Identifiable 
} 

abstract class AbstractOptionBaseRepository[T <: IdentifiableAbstractTable[_]] 
+0

谢谢。该解决方案看起来非常好。 – ntviet18