2013-12-19 40 views
0

我想創建一個TreeMap與泛型類型,但我無法。我這樣做,因爲我的地圖可以喜歡這些:無法實例化Map <String,?擴展Object> map = new TreeMap <String,?擴展Object>();

Map<String, QueryTerm> terms = new TreeMap<String, QueryTerm>();   
    Map<String, String> params = new TreeMap<String, String>(); 

因此,而不是創建多個函數來處理不同類型的我想創建一個該兩種類型的地圖。

我該怎麼做,我做錯了什麼?

功能

private Map<String, ? extends Object> setDatumMap(UserSession session, String parameterName) 

    { 
     Map<String, ? extends Object> map = new TreeMap<String, ? extends Object>();    

     //Get comma delimited list of filter keys. Split them and use them to retrieve associated values. 
    String sFilters = (String) session.getAttribute(parameterName); 
    String[] filterList = sFilters.split(","); 
    for(String filterName : filterList) 
    { 
     String filterValue = (String) session.getAttribute(filterName); 
     if (filterValue != null && !filterValue.isEmpty()) 
     { 
      filter.put(filterName, setQueryTermList(filterValue, ListType.BOOLEAN_LIST)); 
     } 
    } 
    return filter; 
} 
+0

發佈函數,因爲您已經試圖編寫它到目前爲止...... –

+0

利用Java SE 7 Map terms = new TreeMap <>();'。此外,您還有一些嚴重的代碼缺陷。 – GGrec

+0

嚴重的代碼缺陷? –

回答

4

你應該簡單地初始化地圖像這樣:

Map<String, Object> map = new TreeMap<String, Object>(); 

無法實例使用通配符,這是沒有必要,除非你希望編譯器通過猜測你將得到什麼樣的價值來投射到適當的班級。我們還沒有到達那裏。

0

您需要更改這一行:

private Map<String, ? extends Object> setDatumMap(UserSession session, String parameterName) 
{ 
    Map<String, ? extends Object> map = new TreeMap<String, ? extends Object>(); 
    //rest of your code 

private Map<String, Object> setDatumMap(UserSession session, String parameterName) 
{ 
    Map<String, Object> map = new TreeMap<String, Object>(); 
    //rest of your code. 

這將工作。

相關問題