另一个方法不允许我访问HashMap值



我在一个方法中实现了一个哈希映射(称之为方法a),在该方法a中,我调用了另一个方法(称为方法b),从中我将方法a中构建的哈希映射传输到方法b。问题是,当我试图在方法b中获取hmap的值时,它不允许我为此编写语句。

在类分析器中,我有两个方法方法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,就像我写入此打印时一样语句,它在控制台上给出结果。我已经公开了这个话题图,我不知道为什么它不允许我写下想要的声明。

您的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代码没有遵循命名或属性访问的最佳实践。

最新更新