首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin类型不匹配List<Any>和List<Comparable<{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}>?>

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

Stack Overflow用户
提问于 2017-10-06 20:51:25
回答 1查看 587关注 0票数 3
代码语言:javascript
复制
 fun serialize(aList: List<Any>)

当我使用包含符号和关键字的列表调用serialize时,编译器报告

类型不匹配:

代码语言:javascript
复制
Require List<Any>
Found: List<Comparable<{Symbol & Keyword}>?>

列表不应该是协变的吗?

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

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

EN

回答 1

Stack Overflow用户

发布于 2017-10-06 22:57:45

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

代码语言:javascript
复制
fun serialize(aList: List<Any?>) {}

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

代码语言:javascript
复制
fun <T> serialize(aList: List<Comparable<T>?>) where T: Symbol, T: Keyword {}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46606188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档