因此,我在Java中有一个小的“虚拟世界”项目,它有一个四个动物(它们扩展了有机体类)。每一个(羚羊,狐狸,海龟,狼)都有一个主动,力量和年龄字段(都是整数)。我想将它们放在数组中,然后将其排序为最高的主动性在顶部,如果主动性在两个动物上是相等的-越老的越高。为了比较它们,我的抽象类“有机体”实现了可比较接口,并且我覆盖了方法compareTo,所以它看起来像这样:public int compareTo
我最近在使用Java,我想知道Java中是否有任何类型的接口实现派生。我首选的编程语言是Haskell,它在很多方面与Java相反,但我想知道Java是否有类似的功能,即能够从复合类型的参数的接口实现派生出复合类型的接口实现。instance (Ord k) => Ord (Pair k v) where
compare (Pair x _) (Pa
据我所知,java在进行比较时转换了一个键,如果一个键没有实现可比较的接口,您将得到一个异常Exception in thread "main" java.lang.ClassCastException: maps.TreeMapExample$A cannot be cast to java.lang.Comparable,即RuntimeException。为什么不明确要求K在类签名中扩展可比较的</e
来自JavaDoc of TreeMap:
注意,如果排序映射要正确实现map接口,则排序映射所维护的排序(无论是否提供显式比较器)必须与等于一致。(与平等一致的精确定义见可比或比较器)。这是因为map接口是按照等于操作定义的,但是映射使用其compareTo (或比较)方法执行所有键比较,因此从排序映射的角度来看,此方法认为相等的</