番石榴TreeMultimap的Kotlin类型推断失败
我有:
data class Edge(val spec: String, val weight: Int) private val graph: SortedSetMultimap<String, Edge> = TreeMultimap.create()
对create()的调用是一个错误:
MapCrawler.kt:(63,71):类型推断失败。 期望的类型不匹配:推断的类型是TreeMultimap <(??? .. ???),(??? ..>)>! 但期望SortedSetMultimap
如果我改变它是一个
SortedSetMultimap<String, String>
它工作正常(类型推断没有问题)。 换句话说,这一行编译得很好:
private val graph: SortedSetMultimap<String, String> = TreeMultimap.create()
关于类型推理的Edge类是什么?我该如何解决?
您需要通过两个比较器实现来create
函数。 看看下面的代码片段:
private val graph:SortedSetMultimap<String, Food> = TreeMultimap.create(Comparator<String> { str1, str2 -> 0 // compare string here }, Comparator<Food> { edge1, edge2 -> 0 // compare Edge object here })
我已经测试过这个工作。 您可以删除数据类型( :SortedSetMultimap<String, Food>
),因为赋值语句可以推断返回哪种类型的值。
希望这可以帮助。