我在方法中实现了一个hashmap(称之为方法a),在那个方法中我调用了另一个方法(称之为方法b),我将方法a中构建的hashmap转移到方法b。问题是,当我尝试在方法b中获取hmap的值时,它不允许我为此编写语句。
在课程分析器中,我有2种方法方法a和方法b。我从下面的陈述中调用了方法b:
analyzer v=new analyzer();
v.b(hMap1, 1);
在方法b中,我尝试获取hmap1的值,但它不允许我写:
public HashMap b(HashMap x,int i)
{
System.out.println( x.get("6").dstip);
}
它不允许我在编写此打印时写.dstip
方法a中的语句,它在控制台上给出结果。我已经公开了hashmap,我不知道为什么它不允许我写出所需的语句。
答案 0 :(得分:6)
您的HashMap是无类型的,因此在其上调用get
方法会返回Object
类型的实例。 Object
上没有名为dstip
的公共属性,因此您的编译失败。当然,如果Java是动态类型的,那么你的代码片段就可以工作了,但那完全偏离主题。
您应该使用适当的参数化类型声明并传递HashMap
。说:
Map<MyDStipBean> map = new HashMap<MyDStipBean>();
public Map<MyDStipBean> b(Map<MyDStipBean> x,int i) {
System.out.println( x.get("6").dstip);
}
另外,您的Java代码不遵循naming或property access的最佳做法。