Maison > Java > javaDidacticiel > Java Reflection peut-il récupérer les noms de variables déclarés localement ?

Java Reflection peut-il récupérer les noms de variables déclarés localement ?

Linda Hamilton
Libérer: 2025-01-03 19:31:39
original
798 Les gens l'ont consulté

Can Java Reflection Retrieve Locally Declared Variable Names?

Java Reflection : découverte des noms de variables locales

Énoncé du problème :

Java Reflection peut-il être utilisé pour récupérer les noms de variables déclarées localement ? Étant donné un extrait de code tel que :

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();
Copier après la connexion

Pouvons-nous développer une méthode qui identifie les noms de variables, tels que :

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
    }
}
Copier après la connexion

Solution :

Jusqu'à Java 8, la récupération des noms de variables locales via la réflexion n'était pas possible. Cependant, une prise en charge partielle a été introduite dans cette version. Les noms de paramètres, un type spécialisé de variables locales, sont devenus accessibles grâce à la réflexion. Cela s'est avéré utile pour remplacer des annotations telles que @ParameterName, couramment utilisées par les frameworks d'injection de dépendances.

Pour des informations plus complètes sur le nom des variables locales, l'examen des fichiers de classe peut offrir des informations. Lors de la compilation, les techniques d'optimisation éliminent parfois ces données pour économiser de l'espace. Cependant, s'il existe, l'attribut de table de variables locales d'une méthode répertorie les types et les noms des variables dans leurs portées d'instructions respectives.

Les outils d'ingénierie de bytecode tels que ASM peuvent potentiellement fournir des mécanismes pour inspecter ces informations au moment de l'exécution. Étant donné l'application de niche de cette capacité principalement dans les environnements de développement, ces bibliothèques offrent des capacités complémentaires au-delà de la simple extraction des noms de variables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal