Newsgroup: it.comp.java
Titolo: stampare il nome di una variabile

È possibile in qualche modo accedere al nome (anzichè al contenuto) di una 
variabile?
Qualcosa tipo
public void valore(int pippo)
 {
  System.pout.print(/*Qualcosa che produca in output "pippo"*/);
  System.pout.println("="+pippo);
 }
Il tutto, ovviamente, senza dover passare come secondo parametro il nome 
ella variabile.
Si può? 

 variabile?
Se la variabile è un un field di una classe, si.
Vedi java.lang.Class.


Non so se è quello che fa per me, la variabile in effetti è un parametro 
passato ad un metodo da tutt'altra classe. Inoltre, stavo
pensando che un parametro passato ad un metodo è comunque una copia della
variabile originale; anche se accedessi al nome, potrebbe essere il nome 
della
copia, e non del parametro che a me interessa.
Posto il codice (stampa di un array) per chiarire il problema:
  protected void printarray(String s,int[]a)
   {
    System.out.print(s+"={");
    for (int i=0;i<a.length;i++)
     {
      System.out.print(a[i]);
      if (i<a.length-1)
       {System.out.print(",");}
     }
    System.out.println("}");
   }
Da richiamare con:
 printarray("pippo",pippo);
Volevo capire se c'è modo di evitare di passare il primo "pippo" (la
stringa).

Usa la reflection

 stringa).
No, tramite la reflection è possibile solo leggere la definizione dei
tipi, quindi se la variabile è parte della definizione di un tipo (un
field) allora puoi recuperarne il nome, altrimenti non è possibile.

 stringa).
Non so se ho ben capito... ma forse una tabella di Hashing potrebbe fare 
al caso tuo..


Dunque... il problema è questo: voglio costruire un metodo 
printarray(int[]a) che produca come output qualcosa tipo 
"pippo={0,2,5,6,0,1}", dove pippo è il nome della variabile passata al 
metodo (ovvero, quella il cui riferimento viene copiato in int[]a).
Il tutto, funzionante nella classe originaria nelle classi figlie (e nipoti, 
pronipoti e così via..); siccome mi serve per eventuali test (mi sono 
stufato, quando ho bisogno di sapere il contenuto di un vettore, di 
riscrivere ogni volta la stessa cosa, per poi cancellarla quando ho risolto 
e riscriverla dopo qualche giorno da qualche altra parte), non ho la minima 
idea, a priori, di quale array debba essere passato in ingresso.
Ovviamente, ho già scritto un printarray(String s,int[]a) da richiamare con 
printarray("pippo",pippo), e se non si può fare diversamente mi va bene 
anche così, ma non mi sarebbe dispiaciuto eliminare uno dei due parametri (a 
condizione di non dover incasinare tutto il resto della classe).

 ha scritto nel messaggio
news:1128519799.6...@g47g2000cwa.googlegroups.com...


 stringa).
Usa la reflection
-- 
Pietro	- 
http://www.pietroweb.tk
Linux Registered User #304991
Powered by MDK Linux Kernel 2.6.10


Scusa, ho cercato in giro qualcosa sulla reflection, ma mi sembra di aver 
capito che serva per determinare i campi di una classe: non capisco come 
potrei, richiamando dalla classe classe1 "classe2.miometodo(pippo)", MENTRE 
SONO ALL'INTERNO DEL METODO STATICO miometodo(int[]a) DELLA CLASSE classe2, 
risalire al fatto che il parametro a è una copia di quello che si chiamava 
"pippo" (visto che è questo che volevo fare). Secondo me non c'entra nulla. 
O sbaglio?