Вы возвращаете ноль независимо от результата блока try / catch.Что делает его "вонючим", так это то, что в блоке catch есть возвращаемый нуль, а в блоке try его нет.
Вероятно, здесь есть ошибка.
new FieldAccessorHandler() {
@Override
public synchronized Object accessField(
final Field field, final Object objectInstance,
final Object value) {
try {
field.set(objectInstance, value);
//Why is nothing being returned here?
} catch (Exception e) {
return null;
}
return null;
}
});
Из того, что видно в этом коде, этот метод должен быть пустым методом.Он устанавливает значение, а не читает его, поэтому в любом случае вы по умолчанию возвращаете null.
Так что, скорее всего, вы реализуете неправильный интерфейс или, если вам нужно вернуть значение, отправляетеnull
только после попытки / улова:
new FieldAccessorHandler() {
@Override
public synchronized Object accessField(
final Field field, final Object objectInstance,
final Object value) {
try {
field.set(objectInstance, value);
} catch (Exception e) {
logger.error(e); //log the exception
}
return null;
}
});