En HashMap, establecer el valor de objeto personalizado en su lugar con objeto de instancias

Divya Jain:

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> empMapes 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 .

MikeFHay:

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 computemétodo:

myMap.compute("employee_key", (k, v) -> {
    Employee e = new Employee();
    e.setSalary(10000);
    return e;
});

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=230839&siteId=1
Recomendado
Clasificación