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

Xar*_*ara 0 java netbeans hashmap

我在一个方法中实现了一个hashmap(称之为方法a),在那个方法中我调用了另一个方法(称之为方法b),我将方法a中构建的hashmap转移到方法b.问题是,当我尝试在方法b中获取hmap的值时,它不允许我为此编写语句.

在类分析器中,我有2种方法方法a和方法b.我从以下声明中调用了方法b:

analyzer v=new analyzer();
v.b(hMap1, 1);
Run Code Online (Sandbox Code Playgroud)

在方法b中,我尝试获取hmap1的值,但它不允许我写:

public HashMap b(HashMap x,int i)
{
  System.out.println( x.get("6").dstip);
} 
Run Code Online (Sandbox Code Playgroud)

它不允许我写入.dstip在方法a中编写此打印语句的位置,它在控制台上给出结果.我已经公开了hashmap,我不知道为什么它不允许我写出所需的语句.

Per*_*ion 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);
}
Run Code Online (Sandbox Code Playgroud)

另外,您的Java代码不遵循命名属性访问的最佳实践.