Java 迭代LinkedHashMap显示编译错误
下面是AttributeValue类的代码-Java 迭代LinkedHashMap显示编译错误,java,generics,loops,map,Java,Generics,Loops,Map,下面是AttributeValue类的代码- @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) @JsonIgnoreProperties(ignoreUnknown=true) public class AttributeValue<T> { private T value; // value private Date timestamp;
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown=true)
public class AttributeValue<T> {
private T value; // value
private Date timestamp; // timestamp
String valueType = null; // class type of the value object
@Deprecated
private int classNumber = 0; // internal
private static Logger s_logger = Logger.getInstance(BEAttributeValue.class);
@JsonProperty("v")
public T getValue() {
if (valueType != null && !value.getClass().getName().equalsIgnoreCase(valueType)) {
value = convert(value, valueType);
}
return value;
}
@JsonProperty("v")
public void setValue(T value) {
this.value = value;
}
private T convert(Object other, String classType) {
T value = null;
if (other != null) {
IJsonMapper mapper = JsonMapperFactory.getInstance().getJsonMapper();
try {
String json = mapper.toJson(other);
Class<T> className = (Class<T>)Class.forName(classType);
value = mapper.toPojo(json, className);
} catch (Exception e) {
s_logger.log(LogLevel.ERROR, "BEAttributeValue::convert(), caught an exception: \n",e.getStackTrace());
}
}
return value;
}
}
当我在al
上检查时,我看到值为LinkedHashMap
,当我打印al.getValue()
时,它给出了这个值-
{predictedCatRev=0;101;1,1;201;2, predictedOvrallRev=77;2,0;1,16;3, sitePrftblty=77;2,0;1671679, topByrGms=12345.67, usrCurncy=1, vbsTopByrGmb=167167.67}
所以我认为al.getValue
将是一个Map
,我可以这样迭代它-
for (Map.Entry<Integer, Integer> entry : al.getValue().entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
for(Map.Entry:al.getValue().entrySet()){
System.out.println(“Key=“+entry.getKey()+”,Value=“+entry.getValue());
}
但它在entrySet()
处给了我一个红色的编译错误。而且我不确定如何才能在检查时清晰地迭代值,我可以将其视为LinkedHashMap
有人能帮我吗?你需要做一个演员阵容。编译器不知道al.getValue()
属于Map
类型,因此您必须具体告诉他:
for (Map.Entry<Integer, Integer> entry : ((Map<Integer, Integer>) al.getValue()).entrySet()) {
for(Map.Entry:((Map)al.getValue()).entrySet()){
您在哪里/如何获得列表
?您能显示它的声明吗?
for (Map.Entry<Integer, Integer> entry : ((Map<Integer, Integer>) al.getValue()).entrySet()) {