2014-04-03 88 views
0

考慮,在繼承AbstractMap.SimpleEntry的子類上實現新接口?

public class XHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V> { 
//impl 
} 

我想繼承XHashMap並有其繼承SimpleEntry內部類實現一個新的接口Y

所以,我該怎麼辦這個明顯的代碼

public class MyXHashMap<K,V> extends XHashMap<K,V> { 
    // over-ride to affect outer My intent 
    // see below re: questions of My inner intent 
} 

正確(在Java中)後,再影響

MyXHashMap.SimpleEntry<K,V> implements Y { 
    //impl of Y 

} 

內當量?

+1

那麼,問題是......? – Rogue

+0

問題就在那裏。再讀一遍。 – nrubin29

+0

爲了回答這個問題,我相信SimpleEntry是一個類或一個接口。你可以嘗試創建一個內部類('public static class SimpleEntry implements Y'),但它可能不起作用,因爲你用一個不同的簽名覆蓋。 – nrubin29

回答

2

AbstractMap.SimpleEntry是一個公共靜態類,因此您可以像對其他任何類一樣對其進行擴展。您可能還想讓您的新類爲靜態,儘管您可以在MyXHashMap之外創建它的實例。

class MyXHashMap{ 

    ... 

    @Override 
    public Set<Entry<K,V>> entrySet(){ 
     //override entrySet() to use your Entry class 


    } 


    static class MySimpleEntry<K,V> extends AbstractHashMap.SimpleEntry<K,V> implements Y { 

     public MySimpleEntry(K key, V value){ 
      super(key,value); 
     } 
     ... 
    } 



} 
+0

+1我認爲你需要'SimpleEntry ',因爲它是靜態的。 –

+0

我明白了。謝謝大家。慈善團隊GRACEEFULLY接受。當我可以的時候會通過它。 –

+0

@PeterLawrey是的,你可能是正確的,更新代碼 – dkatzel