Le problème ici est que les deux déclarations suivantes sont différentes :
def homepageClass[A <: SomeType]: Class[A] // has type parameters
def homepageClass = classOf[SomeOtherType] // doesn't have type parameters
pour accomplir ce que vous voulez, vous devez déclarer un type abstrait, comme celui-ci:
trait SomeTrait{
type A <: SomeType
def homepageClass: Class[A]
}
object SomeObject extends SomeTrait {
type A = SomeOtherType
def homepageClass: Class[A] = classOf[SomeOtherType]
}
Ou
trait SomeTrait[A <: SomeType] {
def homepageClass: Class[A]
}
object SomeObject extends SomeTrait[SomeOtherType] {
def homepageClass: Class[SomeOtherType] = classOf[SomeOtherType]
}
Si vous expliquez maintenant la différence entre ma suggestion et la version existentielle, ce serait génial! :-) –