类型参数界限[T<;:番石榴中的可比[#]];Scala中的MinMaxPriorityQueue

类型参数界限[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).

试图使用guava的库创建
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] = ...