j'ai une classe de type que je voudrais utiliser pour stocker un type d'un objet:Prouver de type limite supérieure pour les types génériques
trait RetainType {
type A
}
object RetainType {
def apply[A0](): RetainType = new RetainType{
type A = A0
}
}
Compte tenu de la classe suivante:
trait Annotation
class Entity extends Annotation
I souhaite que le compilateur de prouver que RetainType.A
étend Annotation
:
def hasAnnotation[A <: Annotation] = Unit
Mais en utilisant RetainType
le compilateur ne semble pas résoudre ce:
val retainType = RetainType[Entity]
hasAnnotation[RetainType.A] //throws an error: type arguments [retainType.A] do not conform to method hasAnnotation's type parameter bounds [A <: Annotation]
Il fonctionne bien si le type est spécifié:
hasAnnotation[Entity] //works fine
Quoi qu'il en soit le compilateur peut prouver cette relation?
Ah, je vous remercie. J'ai raté ce petit bout. – jamborta