2017-10-06 8 views
2
fun serialize(aList: List<Any>) 

Quand j'appelle sérialisation avec une liste contenant le symbole et les mots-clés, le compilateur se plaintincompatibilité de type Kotlin Liste <Any> et Liste <Comparable <{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}>?>

incompatibilité de type

:

Require List<Any> 
Found: List<Comparable<{Symbol & Keyword}>?> 

ne devrait pas être Liste covariant?

comment puis-je construire une signature de type pour correspondre à ce que le compilateur attend List<Comparable<{Symbol & Keyword}>?>

Le compilateur attend le type List<Comparable<{Symbol & Keyword}>?> mais qui n'est pas la syntaxe valide Kotlin

+0

'serialize amusant (aList: Liste <*>)'? –

Répondre

4

Vous devez faire serialize() d'accepter List<Any?> place depuis votre est nullable.

fun serialize(aList: List<Any?>) {} 

Si vous voulez accepter List<Comparable<{Symbol & Keyword}>?>, vous devez utiliser la clause WHERE pour fournir de multiples limites supérieures:

fun <T> serialize(aList: List<Comparable<T>?>) where T: Symbol, T: Keyword {}