2016-05-27 7 views
1

für ein bisschen tiefer in Scala Ich spiele mit einem MySQL-Wrapper. Keine Produktion, nur experimentieren.Zugriffsmethoden von Generic, die ein Merkmal ausdehnen

Ich habe eine Eigenschaft, die eine abstrakte Methode gibt:

trait EntityDefinition { 
    def tableName: String 
} 

Dann habe ich eine parametrisierte Klasse, wo ich Tabellenname zugreifen möchten:

class FinagleRepository[T >: EntityDefinition] @Inject()(client: FinagleMysqlClient) { 
    def create(entity: T): Future[Result] = { 
    // Here it is impossible to call T.tableName 
    } 
} 

jemand kann mir sagen, was ich falsch mache ?

Antwort

3

Du bist gerade EntityDefinition definieren ein lower bound für T zu sein, sollte T Bedeutung sein ein geordneter Typ von EntityDefinition. Was Sie wirklich wollen, ist für EntityDefinition ein ein upper bound für T, zu sein T Bedeutung von EntityDefinition ein Subtyp sein:

class FinagleRepository[T <: EntityDefinition] 
+0

Hallo Yuval, vielen Dank für diese Antwort. Solch ein dummer Fehler ... :-) – xm22

+0

@ xm22 Passiert das Beste :) Willkommen. –