Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46

    Ricerca variabile in un metodo

    Ciao,
    sto studiando i compilatori e in particolare mi viene chiesto come viene ricercata una variabile all'interno di un metodo di una classe X in java. Non so se è la sezione giusta, perchè non riguarda proprio la programmazione java.
    In ogni caso quello che mi servirebbe capire è come vengono visitate le varie Symbol Table per risalire alla variabile del metodo.
    La mia idea è quella di accedere alla s.t della classe, per ogni dichiarazione di metodo ricerco la definizione della variabile nella s.t del metodo in esame. Se trovo la dichiarazione OK, altrimenti siamo nel caso di una variabile non dichiarata.
    Sapete aiutarmi?
    Grazie

  2. #2
    Quote Originariamente inviata da Giuso Visualizza il messaggio
    La mia idea è quella di accedere alla s.t della classe, per ogni dichiarazione di metodo ricerco la definizione della variabile nella s.t del metodo in esame. Se trovo la dichiarazione OK, altrimenti siamo nel caso di una variabile non dichiarata.
    Scusa, quindi per capire, riferito a Java, COME vorresti "indagare" nel bytecode della classe? Tramite reflection? O analizzando direttamente il formato del file .class?

    Ti dico subito una cosa: i NOMI delle variabili locali nei metodi compaiono nel constant-pool del .class solo se la compilazione viene fatta per "debugging" (in javac l'opzione -g ). Altrimenti NON ci sono.

    E in ogni caso, tramite la "reflection" di Java le variabili locali NON non sono "esposte" in alcun modo.
    I nomi "reali" (dal sorgente) dei parametri di metodi/costruttori, invece sì, sono disponibili tramite reflection ma solo da Java 8 in poi e previa compilazione con una opzione speciale di javac chiamata -parameters .
    Ultima modifica di andbin; 20-05-2019 a 21:43
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.