Erro ao recuperar atributo privado de uma classe usando reflection

Galera, seguinte, preciso recuperar o valor de um atributo de uma classe, ou seja, dado o nome do atributo, eu consigo recuperar o seu valor, encontrei uma forma de recuperar usando refletion em java, num entanto se os atributos da classe estiver private, o método lança esta exceção java.lang.IllegalAccessException : can not access a member of class br.com.exemplo.Evento with modifiers “private”. Se colocar os modificadores da classe que eu estou tentando recuperar os atributos como public o problema é resolvido, só que os atributos devem está private. Alguém sabe como resolver este problema?

public Object getAtributo(String atributo, Evento evento) throws AtributoInvalidoException{ Field[] field = evento.getClass().getDeclaredFields(); for (int i = 0; i < field.length; i++) { if (field[i].getName().equals(atributo)) { try { return field[i].get(evento); } catch (IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); } } } throw new AtributoInvalidoException(); }

Desde já agradeço!

Arow,

Tenta assim:

try {
    field[i].setAccessible(true); 
    return field[i].get(evento);	
}
1 curtida