我有以下方法返回地图。
private Map<String, FilterParam> retrieveFilter(Map<String, String> params) {
Map<String, FilterParam> filterParams = new HashMap<>();
for(Entry<String, String> e : params.entrySet()){
if(someOthermap.containsKey(e.getKey())){
filterParams.put(e.getKey(), parser.parse(e.getKey(), e.getValue()));
}
}
return filterParams;
}
public class FilterParam {
public FilterParam parse(String key, String value){
FilterParam filterParam = new FilterParam();
filterParam.setKey(key);
if(value.length() > 1 && value.startsWith("$")){
filterParam.setOperator(Operator.PROCESS);
filterParam.setValue(value.substring(1));
}else{
filterParam.setOperator(Operator.QUIT);
filterParam.setValue(value);
}
return filterParam
}
}
我的问题是,当filterparams返回值时,它的值类似于
{name=com.test.FilterParam@15db9742}
这是正确的,但我想获得地图的实际值,如
(name = Chuna)
其中key = name和value = Chuna
这是可能的如果我将方法解析(String,String)的返回类型从FilterParam更改为String,那么我可以很容易地得到它的值。
在这里,我的要求是说不要改变返回类型,而是从map而不是object获取值。
我很困惑如何获得价值!请有人指导我。
答案 0 :(得分:1)
您需要覆盖toString()
类的FitlerParam
方法。
默认的toString()
实现以十六进制为基础连接包名,类名,@
和对象的hashCode,你不需要它,所以你需要提供自己的实现。