2011-03-30 99 views
2

我有一个Args类,这个类扩展HashMap,有一些方法:我怎样才能得到一个链接的HashMap

public class Args extends HashMap{ 
    public myMethod_1(){ 
     //... 
    } 
    public myMethod_2(){ 
     //... 
    } 
    public myMethod_3(){ 
     //... 
    } 
} 
现在

,我希望得到一个链接Args实例,但exnted LinkedHashMap

我无法将参数更改为LinkedHashMap,也无法将Args更改为接口

我可以获得链接Args实例吗?

如果没有,如何获得最佳方式LinkedArgs? (不重复myMethod_1-3

+2

为什么你不能改变Args来扩展LinkedHashMap?你知道LinkedHashMap扩展了HashMap吗?所以通过改变Args来扩展LinkedHashMap,你不会放弃HashMap提供的任何功能。 – Asaph 2011-03-30 02:33:02

+2

你能澄清你要做什么吗?我不明白你为什么不能扩展LinkedHashMap而不是HashMap。 – Suroot 2011-03-30 02:36:10

回答

2

简单的解决办法是改变Args扩展LinkedHashMap。 (我知道你说你不能...)

如果这不是一种选择,那么下一个最好的解决办法是改变Args实施Map和委派所有的Map API中的方法(和他人需要)到私人LinkedHashMap实例。

如果这不是一个选项,你可以使用扩展HashMap。基本上,你覆盖父母HashMap中的所有方法,并将这些操作委托给一个私人LinkedHashMap实例。 (这是丑陋的,但它的工作原理... modulo每个Args对象有一堆属性被初始化,从未使用过。)