Newsgroup: it.comp.java
Titolo: Conocere nome proprietà

Ciao  a tutti,
Ho una classe che contiene delle costanti  definite public del tipo
public class Parameter {
	  public  final String param1  = "CODFIS_F24";
	  public  final String param2  = "PIVA_F24";
	  public  final String param3  = "COGNOME_F24";
	  public  final String param4  = "NOME_F24";
	  public  final String param5  = "DNAS_F24";
	  public  final String param6  = "SESSO_F24";
	  public  final String param7  = "COMNASC_F24";
	  public  final String param8  = "PROVNASC_F24";
	  public  final String param9  = "DOMFISC_F24";
	  public  final String param10  = "PROVFISC_F24";
	  public  final String param11  = "INDFISC_F24";
          etc. etc. etc.
}
i parametri sono tanti e devo passarli ad un  metodo di una classe. è
possibile estrarre nome e valore di ogni proprietà ovviamente ciclando
all'interno della classe?
se non ricordo male per i bean c'è la classe Introspector che fa
qualcosa del genere...

 all'interno della classe?
Con la reflection (java.lang.reflection) se non sbaglio si possono 
ottenere i metodi ma non mi pare anche i campi.
C'è una libreria jakarta/apache,invece,  che permette di leggere i 
.class ed estrarne la struttura, non mi ricordo esattamente il nome; mi 
pare BCEL, BCE o qualcosa di simile
bye
DKano

 pare BCEL, BCE o qualcosa di simile
questa fa  il controllo fisico sul file e non è quello che cercavo
al massimo proverò con l'introspector creando un bean

Ma perchè non usare le ENUM?


 Ma perchè non usare le ENUM?
ehmmm...come? :)

 trova...
Prova con java.lang.reflect... :-)
http://java.sun.com/docs/books/tutorial/reflect/index.html
Ciao
Mirko

 
Ma tu puoi modificare la classe? Avevo capito che era una cosa non 
modificabile e/o che ereditavi da altri. Allora al posto di tanti campi 
puoi usare una struttura dati piů leggibile, tipo gli enum suggeriti da 
Nico oppure altro
bye
DKano

 Nico oppure altro
incipit per l'enum?


http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html
L'esempio è un po' una miscellanea di tanti caratteristiche di Java5,
ad ogni modo, ti basti sapere che puoi ciclare con il metodo values()

 ad ogni modo, ti basti sapere che puoi ciclare con il metodo values()
Vi ringrazio tutti quanti...ora farò delle prove e vedrò il metodo
che più si addice

Per la cronaca alla fine enum viene usato dalla vers. 1.5 mentre io ho
la 1.3 quindi dovrò per forza usare Reflect o Introspector...

 
Scusa, so che magari è una soluzione naive, ma inserire un array? Non 
hai accesso al sorgente?
public class Parameter {
     public static final String[] PARAMS = new String[]
     {
         "CODFIS_F24",
         "PIVA_F24",
         "COGNOME_F24",
         "NOME_F24",
         "DNAS_F24",
         "SESSO_F24",
         "COMNASC_F24",
         "PROVNASC_F24",
         "DOMFISC_F24",
         "PROVFISC_F24",
         "INDFISC_F24",
      }
}
Ciao,
     Bruno
P.S.
Il JavaDay è qui!
http://www.javaday.it
-- 
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
| Coordinatore del JUG Torino - 
http://www.jugtorino.it

 hai accesso al sorgente?
 ci avevo pensato (sarebbe stata la più comoda  e la più  semplice :)
) ma appunto sarebbe meglio non modificare quella classe (o meglio
stravolgerla in questo caso) perchè la utilizzano altre classi


Nulla ti vieta di inserire l'array e mantenere le costanti, in termini 
di occupazione di memoria non cambia circa nulla:
public class Parameter {
     public  final String param1  = "CODFIS_F24";
     public  final String param2  = "PIVA_F24";
     public  final String param3  = "COGNOME_F24";
     public  final String param4  = "NOME_F24";
     public  final String param5  = "DNAS_F24";
     public  final String param6  = "SESSO_F24";
     public  final String param7  = "COMNASC_F24";
     public  final String param8  = "PROVNASC_F24";
     public  final String param9  = "DOMFISC_F24";
     public  final String param10  = "PROVFISC_F24";
     public  final String param11  = "INDFISC_F24";
     etc. etc. etc.
     public static final String[] NAMES = new String[]
     {
         param1,
         param2,
         param3,
         param4,
         param5,
         param6,
           etc. etc. etc.
      }
}
Puoi anche definire la costante NAMES privata (meglio) offrendo un 
metodo statico names() che torna una Collection
Certo che i nomi ("param1, param2"...) fanno proprio pena :-(
Poi le costanti le definirei statiche e le porrei in maiuscolo (è uno 
standard richiesto e spesso molto utile)
Poi vedi tu.


 standard richiesto e spesso molto utile)
infatti in realtà son così :)
Grazie cmq della precisazione :)