Newsgroup: it.comp.java
Titolo: Parere su passaggio parametri

Salve, vorrei chiedere un vostro parere per questo mio problema.
Ho la seguente necessita`: fare in modo che una applicazione Java riceva 
dei parametri da una applicazione *non* Java (scritta in C, C++, COBOL, 
vattelapesca...).
Starete sicuramente pensando: basta passare gli argomenti alla 
applicazione Java e prenderli tramite String[] args dal main in Java.
Io pero` volevo passare i parametri in modo un po` piu` strutturato e 
anche "tipizzato". Ad una applicazione Java vorrei passare ad esempio: 
una stringa, 2 interi e un array di double.
Ho gia` escluso tutto cio` che riguarda la comunicazione interprocess 
come socket, ecc... (sarebbe facile in Java ma non con altri linguaggi).
Ho quindi pensato subito di usare dei semplici file di testo e in prima 
battura ho pensato ad un qualcosa tipo i file INI, cioe` organizzato con 
elementi nome=valore.
Pero` cosi` non e` tipizzato e per gli array ... come faccio?
La seconda idea sarebbe questa: usare sempre dei file di testo ma con 
una sintassi Java-like, del tipo:
string nome1="prova"
int nome2=12
int nome3=54
double[] nome4={12.5,30.7,67.34}
Una classe Java apposita effettuerebbe il parsing del file e si 
metterebbe i dati in una HashMap e permetterebbe di leggerli con metodi 
del tipo getInt, getString, getDoubleArray, ecc...
Ovviamente la sintassi del file dovrebbe essere stringata al massimo: 
non sarebbero ammessi commenti, espressioni, ecc... Dovrebbe bastare una 
"macchina a stati" non troppo complessa per analizzare il file.
Cosa ne pensate? Ci potrebbero essere altre soluzioni?
Grazie

 Pero` cosi` non e` tipizzato e per gli array ... come faccio?
XML ? Mi pare esista gia' qualcosa.
Se proprio vuoi reinventare da zero, io fare una struttura XML che 
comprende il nome della classe (Bean) che accogliera' i dati, i nomi dei 
setters e il tipo di parametro che accettano:
   <MyClass>
     <valoreStringa type="String">numeri di fibonacci</valoreStringa>
     <arrayDiInt type="int[]">0,1,1,2,3,5,8,13</arrayDiInt>
   </MyClass>
E MyClass avra' qualcosa del tipo
   setValoreStringa(String in) {
     ..
   }
   setArrayDiInt(int[] in) {
     ..
   }
Per popolare il tuo bean dovrai andare giu' pesante di reflection.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 
Usare XML? In Java è facilissimo leggersi un file xml, negli altri 
linguaggi non so ma presumo che vista la diffusione una qualche libreria 
per scrivere dell'xml ci dovrà pur essere...
bye
DKano

 double[] nome4={12.5,30.7,67.34}
Scusa se ti do un consiglio poco carino, ma x una cosa semplice io
approfitterei appunto del array di stringhe "args" del main...
Scegli un separatore (Ex. \n) e dall'applicazione chiamante crei la
stringa:
prova\n12\n45\n12.5\n30.7\n67.34\n ecc...
in java:
...controlli vari...
String splittedString=args.Split("\n");
String nome1=splittedString[0];
int nome2=Integer.ParseInt(splittedString[1]);
int nome3=Integer.ParseInt(splittedString[2]);
double[] nome4=new double[splittedString.length-3];
for(int i=0; i<nome4.length;i++)
    nome4[i]=Double.ParseDouble(splittedString[i+3]);
L'ho scritta così "al volo" sicuramente è piena di errori, però se
ti piace l'idea usalo come punto di partenza!