又遇到了一个问题。
我试图发送一个完整的对象Map及其关联的键,以便可以从另一个类访问它。我正在使用的方法不起作用,因为我尝试使用与传递数组列表相同的方法,但它不适用于Map。
这样做的正确方法是什么?
这就是我试过的
public Map <Integer, Employee> getAllEmps()
{
return (Map <Integer, Employee>) ;
}
这就是我宣布它的方式(实际的地图本身)
private static Map <Integer, Employee> employeeMap = new TreeMap<Integer,Employee>();
答案 0 :(得分:2)
您必须返回地图实例,而不是类型。
public Class SomeClass{
private static Map<Integer,Employee> employeeMap=...;
//Other methods
public Map <Integer, Employee> getAllEmps()
{
return employeeMap ;
}
}
如果您只想要员工(没有钥匙),您可以添加其他方法
public Collection<Employee> getEmployees(){
return employeeMap.values();
}
答案 1 :(得分:2)
您可以自行返回变量:
public Map <Integer, Employee> getAllEmps()
{
return employeeMap;
}
允许任何人修改地图的对象。
为了防止修改,您可以返回一个不可修改的Map:
public Map <Integer, Employee> getAllEmps()
{
return Collections.unmodifiableMap(employeeMap);
}
或者,您可以返回副本:
public Map <Integer, Employee> getAllEmps()
{
return new TreeMap<Integer,Employee>(employeeMap);
}
答案 2 :(得分:1)
为什么不尝试传递变量本身并将地图作为成员变量?
private Map <Integer, Employee> employeeMap = new Map <Integer, Employee>();
public Map <Integer, Employee> getAllEmps()
{
return employeeMap;
}
答案 3 :(得分:0)
你的getAllMaps()函数需要实际返回一个地图;你的意思是返回静态employeeMap吗?