2013-06-20 27 views

回答

3

尝试声明类为

class MyTreeMap extends TreeMap<Integer, Integer> { 

注意MyTreeMap没有任何类型的参数,因为我们知道,我们只是想对付Integer秒。

+0

我真的不明白这一点。好的Ryan Yu以这种方式陈述了这个问题,但是这个问题并没有给出额外的理由来做这件事,而不是仅仅使用泛型,只要没有其他理由我不会创建一个子类。我会推荐马特球回答。 – cproinger

+0

@cproinger可以有这样做的理由......如果你想改变TreeMap功能的某个方面,或者让它实现另一个接口。如果不了解更多关于OP的困境,你不能认为这是毫无意义的。 – arshajii

+0

当然。但问题中没有。改变TreeMap功能的某些方面可能会破坏TreeMap的语义,但MyTreeMap仍然可以分配给TreeMap ...嗯,我并不是说它通常是错误的,但是从我的经验来看,更多的时候不是你在拍摄自己通过从集合类扩展(脚本没有足够的上下文来知道,但想想如果你想用hibernate来持久化对象)。 – cproinger

2

您不需要扩展或施放任何东西。 Use generics:

Map<Integer, Integer> foo = new TreeMap<Integer, Integer>(); 

...你就完成了。

+2

呃我不认为这真的回答OP的问题。你所做的是创建一个只能使用Integers的TreeMap实例,你没有做的是创建一个只能使用Integers的特定TreeMap数据结构。 – Woot4Moo

+0

@ Woot4Moo不确定我看到了这一点,但足够公平。这感觉非常不通用的集合。 –

1

你可能要考虑的是实现了Map接口,像这样什么:

class MyIntegerMap implements Map<Integer,Integer> 
{ 
    private TreeMap<Integer,Integer> internalTreeMap; 
    ... 


    public Integer put(Integer key, Integer value) 
    { 
      interalTreeMap.put(key,value); 
    } 
} 

这样做是允许你利用已定义TreeMap的功能(避免所有的问题与性能,如果你手挽),它允许您限制子类的有效输入类型。

相关问题