PDA

View Full Version : [JAVA] Stampare attributi di classe


fedo
10-08-2006, 12:46
Ciao,

ho una classe composta da 10 variabili double, ma spesso ne aggiungo altre o le rimuovo..

Mi servirebbe un metodo che mi stampa a video tutti i nomi seguiti dai valori correnti della variabili.

Ho fatto una cosa di questo tipo:



public void printVp(){

Field[] parArray = this.getClass().getFields();
String parName;
String parValue;

System.out.println("\n\nGk32B: print results starts");

for(int i=0; i<parArray.length; i++){
parName = parArray[i].getName();
parValue = "";


System.out.println("\n\n"+ parName + " = "+parValue);
}

System.out.println("\n\nGk32B: print results done");
}


Come potete vedere risco a farmi dare tutti i nomi delle varibili di classe (fields) , ma per il valore a runtime non ho trovato nulla di buono..

Sapete aiutarmi?

grazie

fedo
10-08-2006, 19:12
a nessuno è mai servita questa cosa?

andbin
11-08-2006, 14:10
Come potete vedere risco a farmi dare tutti i nomi delle varibili di classe (fields) , ma per il valore a runtime non ho trovato nulla di buono..Bastava guardare bene la documentazione della classe Field :read: ... contiene molti metodi nella forma getXXX per ottenere i valori. ;)

fedo
13-08-2006, 15:45
ma sei sicuro che ci siano i get per i valori? me la sono guardata bene la documentazione prima di scrivere qui, ma non ho trovato nulla di utile..
Se mi dici così probabilmente ti è capitato di usare quesi metodi e quindi vado a ricontrollare la documentazione..

grazie.ciao

andbin
13-08-2006, 16:08
ma sei sicuro che ci siano i get per i valori? me la sono guardata bene la documentazione prima di scrivere qui, ma non ho trovato nulla di utile..
Ok ... forse un esempio completo è meglio! Non è il massimo come design ma l'ho scritto velocemente per farti capire.
import java.lang.reflect.*;

public class Prova
{
public static void main (String[] args)
{
try
{
Valori v1 = new Valori (10, "Ciao");

Field[] fields = Valori.class.getFields();

for (int i=0; i<fields.length; i++)
{
String fldName = fields[i].getName ();
Object fldValue = fields[i].get (v1);

System.out.println ("Nome campo: " + fldName + " / valore: " + fldValue);
}
}
catch (Exception e)
{
e.printStackTrace ();
}
}
}

class Valori
{
public int num1;
public String str1;

public Valori (int n, String s)
{
num1 = n;
str1 = s;
}
}Stampa:
Nome campo: num1 / valore: 10
Nome campo: str1 / valore: Ciao