"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O Java Reflection pode recuperar nomes de variáveis ​​​​declarados localmente?

O Java Reflection pode recuperar nomes de variáveis ​​​​declarados localmente?

Publicado em 23/12/2024
Navegar:930

Can Java Reflection Retrieve Locally Declared Variable Names?

Java Reflection: Descobrindo nomes de variáveis ​​locais

Declaração do problema:

O Java Reflection pode ser utilizado para recuperar os nomes de variáveis ​​​​declaradas localmente? Dado um trecho de código como:

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();

Podemos desenvolver um método que identifique os nomes das variáveis, como:

public void baz(Foo... foos) {
    for (Foo foo : foos) {
        // Print the name of each foo - b, a, and r
        System.out.println(***); // Placeholder for variable name access
    }
}

Solução:

Até o Java 8, não era possível recuperar nomes de variáveis ​​locais por meio de reflexão. No entanto, o suporte parcial foi introduzido nessa versão. Os nomes dos parâmetros, um tipo especializado de variáveis ​​locais, tornaram-se acessíveis através da reflexão. Isso se mostrou útil na substituição de anotações como @ParameterName, comumente empregadas por estruturas de injeção de dependência.

Para obter informações mais abrangentes sobre nomes de variáveis ​​locais, examinar arquivos de classe pode oferecer alguns insights. Durante a compilação, as técnicas de otimização às vezes eliminam esses dados para economizar espaço. No entanto, se existir, o atributo da tabela de variáveis ​​​​locais de um método lista os tipos e nomes das variáveis ​​​​dentro de seus respectivos escopos de instrução.

Ferramentas de engenharia de bytecode, como ASM, podem fornecer mecanismos para inspecionar essas informações em tempo de execução. Dada a aplicação de nicho desta capacidade principalmente em ambientes de desenvolvimento, tais bibliotecas oferecem capacidades complementares além da mera extração de nomes de variáveis.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3