我正在尝试使用泛型类型创建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;
}
答案 0 :(得分:4)
您应该像这样简单地实例化地图:
Map<String, Object> map = new TreeMap<String, Object>();
你不能使用通配符进行实例化,除非你期望编译器通过猜测你将获得什么值而转换为适当的类,否则它是没有必要的。我们还没有到达那里。
答案 1 :(得分: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.
这样可行。