Kotlin类型不匹配List <any>和List <comparative <{com.cognitect.transit.symbol&=“”com.cognitect.transit.keyword} =“”>?&gt;

时间:2017-10-06 12:51:25

标签: kotlin type-mismatch covariant

 fun serialize(aList: List<Any>)

当我使用包含Symbol和Keyword的List调用serialize时,编译器会抱怨

类型不匹配:

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

列表不应该是协变的吗?

如何构造类型签名以匹配编译器期望的List<Comparable<{Symbol & Keyword}>?>

编译器需要类型List<Comparable<{Symbol & Keyword}>?>,但这不是有效的kotlin语法

1 个答案:

答案 0 :(得分:5)

您必须让serialize()接受List<Any?>,因为您的Comparable类型可以为空。

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

如果您希望它接受List<Comparable<{Symbol & Keyword}>?>,您必须使用where子句来提供多个上限:

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