Scala 中 java.util.Comparator 的通用实现

斯佩克塔库拉蒂乌斯

我在 Java 和 Scala 中使用旋转模板。所以我试图对模板中的 List 进行排序,但我不知道如何覆盖 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 有什么关系?!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么equals在java.util.Comparator中不是必须实现的?

在Scala中实现通用Vector

在scala中实现通用接口

遍历Scala中的java.util.BitSet

Scala,无法实现通用的Java方法

Java中的通用Iterator实现

在Java中实现通用接口

java.util.Comparator实例的命名约定

通过java.util.ServiceLoader加载通用服务实现

java在匿名类中实现通用接口

在Clojure中实现Java通用接口

在Java中实现通用接口的枚举常量

Java的通用实现,例如C中的List

在Scala中,如何重写采用java.util.Map的方法

如何从 Scala 中的 java.util.Date 中提取周数

从Scala中的java.util.Set构造一个java.util.List

根据通用接口的实现来限制Java中的通用类型

NoSuchMethodError-没有静态方法比较(java / util / Comparator)

java.util.HashMap是否不能在Kotlin中实现java.util.Map吗?

java.util.Comparator.naturalOrder采用<T扩展Comparable <?超级T >>并返回Comparator <T>-为什么?

Scala:使用PureConfig创建通用util

为什么java.util.Arraylist#clear是在OpenJDK中实现的?

在 Java 中如何为扩展 Comparator 的类实现多个比较器方法?

从scala.collection.immutable.List转换为Java中的java.util.List

在Java中为接口实例列表实现通用容器

如何先手在实现类中的方法与Java的通用接口

在Java中以通用方式实现可比方法以进行排序

Java中具有特定类型的通用接口的实现

如何在Java中实现许多类通用的定制方法?