Newsgroup: it.comp.java
Titolo: ArrayList: messaggio di warning che non capisco

Buongiorno a tutti!
Sto risolvendo un esercitazione in Java in cui mi viene chiesto di 
progettare un'applicazione distribuita che realizzi l'ordinamento remoto 
delle linee di un file.
Per quanto concerne la parte server, è necessario controllare che il Client 
sia autorizzato a richiedere il servizio, verificando la presenza 
dell'indirizzo (espresso come nome logico) del Client nel file 
"autorizzati.txt".
A questo proposito, ho creato una classe (che allego in calce al messaggio) 
che, dato il nome di un file, riempe un ArrayList delle stringhe in esso 
contenute. Per funzionare, funziona... ma vorrei capire se il codice che ho 
scritto va bene secondo la filosofia di Java, visto ch faccio ancora fatica 
ad entrare nell'ordine di idee...
Ad ogni modo, compilando la classe, ottengo il seguente messaggio che mi ha 
lasciato un po' perplesso:
Note: [...]RemoteSort.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Detto fatto, ed ho ottenuto il seguente nuovo messaggio:
RemoteSort.java:42: warning: [unchecked] unchecked call to add(E) as a 
member of the raw type java.util.ArrayList
                                                licenseArray.add (line);
                                                                   ^
1 warning
Che cosa significa? Cosa dovrei fare per evitare di ottenere 
quest'avvertimento? Un typecast? Ma a che cosa?
Grazie mille in anticipo, spero possiate dissipare i miei dubbi,
        Stefano
-----[ Estratto da 
RemoteSort.java ]----------------------------------------------
class license {
 private static ArrayList licenseArray;
 public license (String filename) {
  licenseArray = new ArrayList (0);
  try {
   BufferedReader licenseFile = new BufferedReader (new FileReader 
(filename));
   boolean EOF = false;
   String line;
   while (!EOF) {
    try {
     if ((line = licenseFile.readLine ()) == null) {
      licenseFile.close ();
      EOF = true;
     } else {
      licenseArray.add (line);
     }
    } catch (IOException e) {
     EOF = true;
    }
   }
   System.out.println ("  License file processed.");
  } catch (FileNotFoundException e) {
   System.err.println ("  License file not found...");
   System.exit (1);
  }
 }
 public String toString () {
  String line;
  line = "Licensed:";
  for (int i = 0; i < licenseArray.size (); i++)
   line = line + "\n" + licenseArray.get (i);
  return line;
 }
 public boolean isLicensed (String client) {
  return licenseArray.contains (client);
 }
}
-----[ chiamata da main ]----------------------------------------------
public class RemoteSort {
public static final String FILE = "../autorizzati.txt";
 public static void main(String[] args) throws IOException {
  license l = new license (FILE);
  System.out.println (l);
  ...
 }
}

Stai utilizzando il jdk 1.5 o l'1.4.2.x?

Ciao Francesco!
Sto utilizzando JDK 1.5, per la precisione "JDK version 1.5.0_01"...
Hai idea del perchč di tutto questo?
Grazie,
        Stefano 

Ti do' una risposta molto vaga perche' non ho conoscenze precise sul jdk1.5,
pero':
nell'1.5 puoi definire enumerazioni, liste, ecc... *tipizzate* e controllate
a compile-time invece che a run-time. In pratica puoi definire, ad esempio,
una List di String, tanto per dirtene una.
Probabilmente il tuo compilatore ti sta avvertendo in merito, ossia che non
hai definito una lista tipizzata e/o non hai utilizzato correttamente questi
meccanismi. Mi spiace di non poterti dare sicurezza in merito, ma almeno hai
una direzione in cui muoverti :)
Buon lavoro!
F

Grazie Francesco!
La spiegazione che mi hai dato è stata sufficientemente precisa... mi sono 
fatto un'idea verosimile del perchè e del percome...
Devi avere per forza ragione tu... Ma a questo punto mi chiedo: come si fa a 
fare una List di String?
I docs di Java son davvero qualcosa di monumentale, ma o sai già dove andare 
a cercare o fai fatica a trovare e comunque non c'è mai uno straccio di 
codice di esempio che ti salvi la vita!
Sarà che sono ancora fortemente legato a Delphi, ma almeno lì nell'help 
c'era un esempio utile quasi per ogni oggetto...
Comunque grazie ancora,
            Stefano 

E' una delle nuove feature della 1.5, se trovi qualche articolo su Gongolo
su cosa c'e' di nuovo trovi molto di interessante al riguardo.

Grazie ancora!
    Ste 

             Stefano
di niente

 fare una List di String?
List<String> myList = new ArrayList<String>();
-- 
_ _ _  _  /_
  _ /_//_///_' ___
   / and yet it does move...

Mi accodo qui per ringraziare tutti quelli che mi hanno fornito i loro 
suggerimenti: ho risolto magnificamente!
Grazie,
            Stefano