Sobes.tech
Junior — Middle

Como é que se pode aceder a campos privados de um objeto através de reflexão?

sobes.tech IA

Resposta da IA

Em Java, através de reflexão, é possível aceder a campos privados de um objeto, alterando a sua acessibilidade com o método setAccessible(true). Isto permite ler e modificar os valores desses campos.

Exemplo:

import java.lang.reflect.Field;

public class Example {
    private String secret = "hidden";

    public static void main(String[] args) throws Exception {
        Example obj = new Example();

        Field field = Example.class.getDeclaredField("secret");
        field.setAccessible(true); // remove a restrição de acesso

        // Ler o valor do campo privado
        String value = (String) field.get(obj);
        System.out.println("Valor secreto: " + value);

        // Alterar o valor do campo privado
        field.set(obj, "revealed");
        System.out.println("Novo valor secreto: " + field.get(obj));
    }
}

É importante lembrar que o uso de setAccessible(true) pode violar a encapsulação e deve ser usado com cautela.