簡體   English   中英

Scala中的通用實現von java.util.Comparator

[英]Generic implementation von java.util.Comparator in Scala

我正在Java和Scala中使用旋轉模板。 因此,我正在嘗試對模板中的列表進行排序,但我不知道如何覆蓋Comparator方法。

我的列表包含設計如下類的對象:

class Foo extends BaseFoo<Foo>

BaseFoo類確實有一個稱為

public String FooName() {/*returns some Name of Foo*/}

在我的scala旋轉模板中,它看起來像:

source: java.util.Collection[_ <: BaseFoo[_]]

在旋轉模板中不嘗試排序:

@Collections.sort(
     new util.ArrayList[_ <: BaseFoo[_]](source),
     new Comparator[_ <: BaseFoo[_]] {
       override def compare(o1: BaseFoo, o2: BaseFoo) = {
             return o1.FooName.compareTo(o2.FooName);
       }
})

但這似乎無法編譯:

類類型為必需,但是找到了java.util.ArrayList [_ <:BaseFoo [_]]

這不是一個直接的答案,但是假設您聲明有一個Foo對象列表,那么直接的解決方案似乎是使用

source: java.util.Collection[_ <: Foo[_]]

或類似的東西!

含義:當列表包含Foo對象時,如果這些對象來自Object或FooBase,那又有什么關系呢?

您可以將source轉換為Scala集合類型,然后在其上調用.sortBy 不需要Comparator

import collection.JavaConverters._
source.asScala.toSeq.sortBy(_.FooName)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM