我有:
data class Edge(val spec: String, val weight: Int)
private val graph: SortedSetMultimap<String, Edge> = TreeMultimap.create()
调用create()是一个错误:
MapCrawler.kt:(63,71):类型推断失败。预期的类型不匹配:推断类型是TreeMultimap&lt;(??? .. ???),(??? .. ???)&gt;!但预计会有SortedSetMultimap
如果我将其更改为
SortedSetMultimap<String, String>
它工作正常(类型推断没有问题)。换句话说,这一行编译得很好:
private val graph: SortedSetMultimap<String, String> = TreeMultimap.create()
什么是关于类型推断的Edge类,以及如何修复它?
答案 0 :(得分:2)
您需要将两个比较器实现传递给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>
),因为赋值语句可以推断返回的值类型。
希望这有帮助。