Kotlin 类型不匹配 List<Any> 和 List<Comparable<{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}>?>

标签 kotlin type-mismatch covariant

 fun serialize(aList: List<Any>)

当我使用包含符号和关键字的列表调用序列化时,编译器会提示

类型不匹配:

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

List 不应该是协变的吗?

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

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

最佳答案

你必须做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 {}

关于Kotlin 类型不匹配 List<Any> 和 List<Comparable<{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}>?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606188/

相关文章:

java - SendBird ChannelHandler onMessageReceived 在 Android 上未调用

Kotlin:密封类不能 "contain"数据类?为什么?

Scala错误的隐含二义性

c++ - 具有 CRTP 可克隆类的无效协变类型

c# - 协变泛型参数

generics - Kotlin 泛型 : counterintuitive type inference and checking with out keyword

android - java.io.IOException : Cannot run program CreateProcess error=2, 系统找不到android studio上指定的文件

spring - Spring Boot运行错误bootRun工作正常,但应用程序运行不正常

Haskell 无法将预期类型 float 与实际类型 'a' 匹配

arrays - 数组类型不匹配