我正在创建一个以自定义对象(例如 Employee)为键的 HashMap。
我没有对 Employee 类的修改权限。
Employee 对象没有 args 构造函数
说 Map<String, Employee> empMap
是我的 map 对象。
如何就地实例化对象并设置值并将其放入 map 中。
Map<String, Employee> mymap = new HashMap<>();
myMap.put("employee_key", () -> {
Employee e = new Employee();
e.setSalary(10000);
return e;
});
这显示错误:lambda 转换的目标类型必须是接口(interface)。
我不想做的事:
myMap.put("employee_key", getEmployee(1000));
private Employee getEmployee(int salary){
Employee e = new Employee();
e.setSalary(salary);
return e;
}
简而言之,我希望在将其作为值放入 map 时进行适当的实例化和赋值,无需使用额外的方法。
最佳答案
我同意 deHaar 的观点,即简单地使用 put
,有或没有方便的方法,可能是你最好的选择。但是,使用 compute
方法可以很好地实现您的要求:
myMap.compute("employee_key", (k, v) -> {
Employee e = new Employee();
e.setSalary(10000);
return e;
});
关于java - 在 hashmap 中,使用就地对象实例化设置自定义对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055564/