Newsgroup: it.comp.java
Titolo: Array di String (o di oggetti in generale)

Un po' mi vergogno a chiederlo ma non riesco a capire la logica che sta
dietro agli array di stringhe (e in generale di oggetti) in java.
Io faccio:
String[] dest;
String[] strings = c.getArrayOfString(); //il metodo restituisce un
array di stringhe, String[]
// dest = new String[strings.lenght()]; //perchè non va?
// dest = strings //perchè non va? copio il riferimento a un array di
stringhe da una var all'altra!!!
                        //Ho provato anche con dest[] = strings[]
Delucidatemi per favore! Ho googlato ma non ho trovato un sito che
spiegasse in modo approfondito come lavorare con gli array di
oggetti...

 // dest = strings //perchè non va? 
Perchè manca il ";"

Se avessi avuto il codice sullo stesso pc da cui scrivo avrei fatto
copia e incolla.
Cercherò di riportare il codice un po' più correttamente.
public  class frmConfig extends JDialog{
...
private String[] dest;
...
public frmConfig(JFrame owner, ConfigurationEngine c)
{
...
String[] strings = c.getDestMail(); //restituisce String[]. Fin qui ok.
dest = new String[strings.lenght]; //Qui mi da un errore. mi dice
"<Identifier> expected".
//Lo stesso errore me lo da se scrivo "dest = new String[7];" non
capisco...
dest = strings; //anche qui mi da un errore...
...
}

 stringhe da una var all'altra!!!
Ma non fai prima a leggere gli errori di compilazione?
O per lo meno non ignorarli come se fossero sciocchezze marginali
sostituendo tutto con un semplice "non va".
Quì probabilmente manca un punto e virgola, dico probabilmente perchè
da quì non si può sapere.

 dest = strings; //anche qui mi da un errore...
Qui gli errori non hanno a che fare con la sintassi del codice che hai
scritto. Postare la segnalazione non sarebbe una cattiva idea

 "<Identifier> expected".
Chi è dest? Dove lo dichiari?

La segnalazione l'avevo postata:
"<Identifier> expected"
Comunque ho capito da cosa dipendeva... In cercavo di fare
l'assegnazione fuori dalle graffe del corpo della classe (mi scuso per
il modo in cui mi sono espresso ma non conosco il nome dell'area di
dichiarazione delle variabili...)
In ogni caso ora ho un altro problema. Il codice completo è:
public class frmConfig
{
...
public method1()
{
  ...
  jList1.setModel(new AbstractListModel(){
    String[] strings = c.getDestMail();
    public int gestSize(){return strings.length;}
    public Object getElementAt(int i){return strings[i];}
    public String[] getStrings(){return this.strings;}
  });
  txtDestMail.setViewportView(jList1); //txtDestMail è un
JScrollPane()
  dest = new String[(int)jList1.getSize().getWidth()];
  for (int w=0;w<(int)jList1.getSize().getWidth();w++)
    dest[w]=jList1.getElementAt(w);
//quest'ultima chiamata mi dice: "Cannot find symbol: method
getElementAt(int) in class //javax.swing.JList
D'accordo, non lo trova... Chiaro... Perchè lo cerca in
javax.swing.JList. Io voglio far riferimento al metodo che ho aggiunto
io --> public Object getElementAt(int i){return strings[i];
(questa è solo una prova... Chiaro che poi una volta che riesco ad
accedere al metodo lo riscrivo meglio, ritornando direttamente tutto
l'array e non gli elementi dell'array uno ad uno.... evitando il
ciclo... Eviterò pure la doppia chiamata a getSize memorizzandone il
valore in una variabile...
Un ultimo appunto: non so se il metodo jList1.getSize().getWidth() mi
ritorna effettivamente la prima (e unica, nel mio caso) dimensione
dell'array, devo provare con il debug magari... Se potete confermare
voi gradisco assai! :)
P.S.
Ho ricopiato ancora a mano, chiedo scusa per eventuali errori di
trascrizione...

dest lo dichiaro subito dopo "public class frmConfig(){"
(Vedi il codice che ho riportato all'inizio. )
Comunque ho risolto, ora il problema è un altro :)

 io --> public Object getElementAt(int i){return strings[i];
Il metodo che hai fatto tu è all'interno di una classe interna e tu
sei al suo esterno.
Inoltre, tu chiami il metodo della classe dell'oggetto jList1. Quindi,
perchè il compilatore dovrebbe usare il metodo "tuo" quando gli dici
di usare quello di jList1?

Ero convinto che usando il metodo "SetModel" si facesse una sorta di
estensione della classe...
Chiedo venia.
Ho comunque risolto in un altro modo.
Grazie a tutti per l'aiuto.
Ciao ciao