类型参数界限[T<;:番石榴中的可比[#]];Scala中的MinMaxPriorityQueue
试图使用guava的库创建类型参数界限[T<;:番石榴中的可比[#]];Scala中的MinMaxPriorityQueue,scala,guava,comparable,type-bounds,Scala,Guava,Comparable,Type Bounds,试图使用guava的库创建MinMaxPriorityQueue,我遇到以下问题: 这项工作: val q: MinMaxPriorityQueue[String] = MinMaxPriorityQueue. maximumSize(10). create() q.add("1.0") 但这并不是: val q: MinMaxPriorityQueue[Double] = MinMaxPriorityQueue. maximumSize(10).
MinMaxPriorityQueue
,我遇到以下问题:
这项工作:
val q: MinMaxPriorityQueue[String] = MinMaxPriorityQueue.
maximumSize(10).
create()
q.add("1.0")
但这并不是:
val q: MinMaxPriorityQueue[Double] = MinMaxPriorityQueue.
maximumSize(10).
create()
q.add(1.0)
就我在搜索时发现的情况而言,这可能是因为Java将scala的Double
视为Java中的Double
,并且它不支持Comparable
。所以我试过这个:
val q: MinMaxPriorityQueue[Comparable[Double]] = MinMaxPriorityQueue.
maximumSize(10).
create()
q.add(1.0)
这是可行的,但当我尝试添加另一个元素时:
a.add(2.3)
它失败了:
java.lang.ClassCastException: scala.runtime.RichDouble cannot be cast to java.lang.Double
这似乎与[1]中提到的问题有关
我还尝试编写类型视图:
类测试[A可能使用java.lang.Double
吗
val q: MinMaxPriorityQueue[java.lang.Double] = ...
应该有用
val q: MinMaxPriorityQueue[java.lang.Double] = ...