Uma maneira legal de evitar lidar com reflexão diretamente em alguns cenários usuais é usar o Spring PropertyAccessorFactory
.
Por exemplo, dado o feijão:
public class NiceBean {
public String value = "default";
public String getValue() {
return "calculated";
}
}
é fácil obter o correto value
reflexivamente chamando PropertyAccessorFactory.forBeanPropertyAccess(new NiceBean()).getPropertyValue("value")
.
Obviamente, evitar totalmente a reflexão é de longe a melhor abordagem, mas, quando necessário, essa é uma boa maneira de não ter que lidar diretamente com o código de reflexão feio. Infelizmente, parece que campos privados não podem ser lidos dessa maneira. Para esse e outros casos mais complexos, dê uma olhada na ReflectionUtils
aula de Spring .