为什么Map接口不限制键泛型类型以扩展Comparable?

时间:2014-11-01 05:27:32

标签: java collections

据我所知,java在进行比较时会抛出一个键,如果一个键没有实现Comparable接口,你将获得Exception in thread "main" java.lang.ClassCastException: maps.TreeMapExample$A cannot be cast to java.lang.Comparable的异常RuntimeException

为什么它没有明确要求 K 在类签名中扩展可比较接口,例如public interface Map<K extends Comparable,V> {让编译器检查它?

1 个答案:

答案 0 :(得分:3)

HashMap不需要键可比较但仍然实现Map接口。只有TreeMap有此要求。

此外,TreeMap也可以与非Comparable键一起使用,provided a comparator at creation time