【问题标题】:Cannot instantiate Map<String, ? extends Object> map = new TreeMap<String, ? extends Object>();无法实例化 Map<String, ?扩展对象> map = new TreeMap<String, ?扩展对象>();
【发布时间】:2013-12-19 10:13:05
【问题描述】:

我正在尝试创建一个具有泛型类型的TreeMap,但我做不到。我这样做是因为我的地图可以喜欢这些:

 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;
}

【问题讨论】:

  • 发布你迄今为止尝试编写的函数...
  • 利用 Java SE 7 Map&lt;String, QueryTerm&gt; terms = new TreeMap&lt;&gt;();。此外,您还有一些严重的代码缺陷。

标签: java generics map treemap


【解决方案1】:

您应该像这样简单地实例化地图:

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

您不能使用通配符进行实例化,除非您期望编译器通过猜测您将获得什么值来强制转换为适当的类,否则这不是必需的。我们还没有到达那里。

【讨论】:

    【解决方案2】:

    你需要改变你这一行:

    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.  
    

    这会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-30
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多