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

Wenn ich mit einer Liste rufen Serialisierung enthalten Symbol und Keyword, der Compiler klagtKotlin Typenkonflikt Liste <Any> und List <Vergleichbare <{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}?>>

Typenkonflikt:

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

Sollte nicht Liste kovariant werden?

wie kann ich eine Art Signatur konstruieren zu entsprechen, was der Compiler List<Comparable<{Symbol & Keyword}>?>

erwartet der Compiler den Typ erwartet List<Comparable<{Symbol & Keyword}>?> aber das ist nicht gültig Kotlin Syntax

+0

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

Antwort

4

Sie haben serialize() zu machen List<Any?> anstatt zu akzeptieren, da Ihr Comparable Typ ist nullfähig.

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

Wenn Sie es wünschen List<Comparable<{Symbol & Keyword}>?> zu akzeptieren, müssen Sie die Verwendung von where-Klausel mehrere obere Schranken zu schaffen machen:

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