Estoy creando un HashMap con objeto personalizado (Empleado por ejemplo) como clave. No tengo acceso a la modificación clase Employee. Objeto empleado no tiene argumentos constructor de Say Map<String, Employee> empMap
es mi objeto de mapa. ¿Cómo puedo crear una instancia de objeto en su lugar y valores establecidos y lo puso en el mapa.
Map<String, Employee> mymap = new HashMap<>();
myMap.put("employee_key", () -> {
Employee e = new Employee();
e.setSalary(10000);
return e;
});
Este error espectáculos: Tipo de destino de la conversión lambda debe ser una interfaz.
Lo que ¡NO quiero hacer:
myMap.put("employee_key", getEmployee(1000));
private Employee getEmployee(int salary){
Employee e = new Employee();
e.setSalary(salary);
return e;
}
En resumen, estoy esperando en el lugar de instancias y asignación, mientras que poner como valor en un mapa sin necesidad de utilizar el método adicional .
Estoy de acuerdo con deHaar que el simple uso put
, con o sin un método de conveniencia, es probable que su mejor opción. Sin embargo lo que lo solicitado puede estar bastante bien logrado mediante el compute
método:
myMap.compute("employee_key", (k, v) -> {
Employee e = new Employee();
e.setSalary(10000);
return e;
});