2011-07-30 113 views
0

UPDATE:轉換枚舉<String>來枚舉<object>

private final java.util.Properties tilesPropertyMap = new Properties(); 

private class DelegatingServletConfig implements ServletConfig { 

     public String getServletName() { 
      return "TilesConfigurer"; 
     } 

    public ServletContext getServletContext() { 
     return servletContext; 
    } 

    public String getInitParameter(String paramName) { 
     return tilesPropertyMap.getProperty(paramName); 
    } 

    @Override 
    public Enumeration<String> getInitParameterNames() { 
     return tilesPropertyMap.keys(); // returns Enumeration<Object> 
    } 

} 

UPDATE:我實現的ServletConfig所以我必須getInitParameterNames()

我將如何轉換枚舉<字符串>來枚舉<對象> ?

+0

tilesPropertyMap一個Map<String, ?>而不是請參閱更新我使用Hashtable的擴展<對象,對象> –

+0

我建議擺脫'Properties'和使用性能的'而不是使用HashMap'。或者你從API中檢索'Properties'對象? – home

回答

0
@Override 
    public Enumeration<String> getInitParameterNames() { 
     Enumeration tile = tilesPropertyMap.keys(); // returns Enumeration<Object> 
     return tile;    
    } 
1

我的理解是,你initilized tilesPropertyMap這種方式(或多或少):現在

tilesPropertyMap = new HashMap<String, Object>(); 

tilesPropertyMap = new HashMap<Object, Object>(); 

最簡單的解決方案是建立在正確初始化HashMap中,像這樣的你不需要施放任何東西,上面展示的方法完全可以工作。還是我誤解了你的問題?

+1

我已經完成了大量的Java工作,但這不可能是正確的語法對吧?不是泛型類型參數應該在類型之後而不是在parens之後?或者是我忽略的新東西? –

+0

請看我的更新 –

+0

@Jeff Mercado:顯然你是對的。我更新了片段。謝謝! – home

0

我不會將所有映射鍵都轉換爲字符串。

如果您確定,只有字符串位於這些鍵的內部,請將映射鍵類型從對象更改爲字符串。

new HashMap()<String, Object>; 

投射洞圖鍵,可能會拋出classcastexception,你將不得不處理它。

0

我假定你的意思是你怎麼轉換Enumeration<Object>Enumeration<String> ...

你不能。

相反,使Map<Object, ?>

+0

請看我的回答。 –

+0

呢?你的意思是你的答案不能編譯?在上面的情況下,我們不需要轉換 – Bohemian

+0

。對象自動轉換爲字符串。在我發佈的隊列中。不會編譯,但如果我把'Enumeration tile = tilesPropertyMap.keys();' –