Map返回方法的最佳实践

时间:2013-12-07 01:00:32

标签: java generics map

假设我有一个方法,它将map作为返回类型并使用泛型。

我想知道填充Map对象的最佳做法是什么。 请参阅代码段。

public Map<String,?> getEmployeeInfo(String query) {

Map<String,Object> dataMap = new HashMap<String,Object>();

    // do some op.

    String empId = "abc123";

    List<Long> projectIds = new ArrayList<Long>();

    List<String> performanceGoals = new ArrayList<String>();


    dataMap.put("empId",empId);
    dataMap.put("projectIds",projectIds);
    dataMap.put("performanceGoals",performanceGoals);

    return dataMap;
}

1 个答案:

答案 0 :(得分:4)

最佳做法是:不要使用它。

使用成员

创建一个类员工
public class Employee {
    String id; 
    List<Long> projectIds;
    List<String> performanceGoals;

    ...

}

您将方法更改为:

public Employee getEmployeeInfo(String query) {
    ...

更新以澄清为什么返回地图一般不好

如果您的方法返回:

Map<String,?>Map<String,? extends Object>你说(俚语):

嘿,看看这里,我要回来了。将它存储在一个名为“something”的变量中,因为我没有对该值进行任何说明。

如果您编写此方法,则必须确保您知道每一行代码,以及使用Map的位置。

假设我想将employeeIdString更改为Integer。这会导致非常糟糕RuntimeExceptionsClassCastExceptions