Kotlin类型不匹配List <Any>和List <Comparable <{com.cognitect.transit.Symbol&com.cognitect.transit.Keyword}>?>
fun serialize(aList: List<Any>)
当我调用包含符号和关键字的列表序列化,编译器抱怨
类型不匹配:
Require List<Any> Found: List<Comparable<{Symbol & Keyword}>?>
不应该列出协变?
我如何构建一个类型签名来匹配编译器期望的内容List<Comparable<{Symbol & Keyword}>?>
编译器期望类型List<Comparable<{Symbol & Keyword}>?>
但是这不是有效的kotlin语法
你必须让serialize()
接受List<Any?>
因为你的Comparable
类型是可空的。
fun serialize(aList: List<Any?>) {}
如果您希望接受List<Comparable<{Symbol & Keyword}>?>
,则必须使用where-clause来提供多个上限:
fun <T> serialize(aList: List<Comparable<T>?>) where T: Symbol, T: Keyword {}