java - 无法实例化 Map<String, ?扩展对象> map = new TreeMap<String, ?扩展对象>();

标签 java generics dictionary treemap

我正在尝试创建一个具有通用类型的TreeMap,但我无法做到。我这样做是因为我的 map 可以喜欢这些:

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

最佳答案

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

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

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

关于java - 无法实例化 Map<String, ?扩展对象> map = new TreeMap<String, ?扩展对象>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678776/

相关文章:

java - 返回包含用户在 Elasticsearch 中输入的关键字的字符串列表

java - 使用反射的泛型类型实例化

java - ClassNotFoundException : edu. stanford.nlp.tagger.maxent.ExtractorNonAlphanumeric

java - 将本地jar(oracle驱动程序)添加到Maven和Bamboo

validation - 最好的 Java 电子邮件地址验证方法是什么?

python - 计算字典中的值

python - 为什么Python2.7 dict使用的空间比Python3 dict多?

delphi - 在 Delphi 中包装函数调用泛型

c# - 如何将动态类型的 Action<T> 传递给方法

java - 直接启动谷歌地图而不提示