enum Temp {
VALUE1(Tempclass::getField1)
VLAUE2(Tempclass::getField2)
private final Function<Tempclass, String> type;
}
class Tempclass {
String field1;
String field2;
}
Using the above code I can get the value of Tempclass fields based on enum values.
Now how to set the fields of Tempclass based on enum value ex: if enum VALUE2 is selected, then i need to set the Tempclass field2 to the input value.
Advertisement
Answer
Use a BiConsumer<Tempclass, String> taking an instance of TempClass and a String and set the appropriate field in the class.
VALUE1(Tempclass::getField1, Tempclass::setField1), VALUE2(Tempclass::getField2, Tempclass::setField2); private final BiConsumer<Tempclass, String> setter;
Get the setter from the enum and pass the values to the accept method of the BiConsumer.
enumInstance.getSetter().accept(tempClassInstance, "some-value");