I have a method:
...
import java.lang.reflect.Field;
...
/**
* @param fieldValue - value to update with
* @param fieldClazz - class of value to update with
* @param objectToUpdate - object to update
* @param field - object's field to update
*/
private static void setValueToField(String fieldValue,
Class<?> fieldClazz,
Field field,
Object objectToUpdate)
throws IllegalAccessException {
if (Boolean.class.equals(fieldClazz)) {
field.set(objectToUpdate, Boolean.valueOf(fieldValue));
} else if (String.class.equals(fieldClazz)) {
field.set(objectToUpdate, fieldValue);
} else if (Integer.TYPE.equals(fieldClazz) || Integer.class.equals(fieldClazz)) {
field.set(objectToUpdate, Integer.parseInt(fieldValue));
} else if (Long.TYPE.equals(fieldClazz) || Long.class.equals(fieldClazz)) {
field.set(objectToUpdate, Long.parseLong(fieldValue));
}
// todo continue handling different types?
}
It updates field of objectToUpdate
with fieldValue
represented as String.
Since field
of objectToUpdate
may be of any class, I have to convert String values of fieldValue
to the respective class (which is provided by fieldClazz
). But this approach is messy, especially when it comes to nested objects.
Is there a way, perhaps with something like Jackson, to generify this approach? Like "convert String to provided Class" or something.
Aucun commentaire:
Enregistrer un commentaire