Newsgroup: it.comp.java
Titolo: Qualcuno mi sa dire cosa c'è che non va?? I vector fanno i capricci...

Ciao ragazzi, Vector non funziona e non riesco a capire perchè!! Cioè
a rigor di logica dovrebbe andare tutto bene ma non capisco perchè da
dei problemi.
La classe website è definita nel seguente modo
import java.net.*;
import java.io.*;
import java.util.Date;
public class Website {
	//Costruttore per la classe Website
	public Website(URL x) throws IOException
	{
		url = x;
		URLConnection c = x.openConnection();  	 //Ottiene la connessione
per l'URL
	    try
	    {
	    	c.connect();                             //Apre la connessione
	    	connected = true;
	    	begModify = new Date(c.getLastModified());
	    	lastModify = new Date(c.getLastModified());
	    }
	    catch(Exception e)
	    {
	    	System.err.println(e);
	        System.err.println("Errore di connessione su "+url);
	    }
	}
	//La funzione stampa a video se è avvenuta o meno una modifica
	public void verificaModifica() throws IOException
	{
		URL x = url;
		if(connected)
		{
			URLConnection c = x.openConnection();  	 //Ottiene la connessione
per l'URL
			c.connect();                             //Apre la connessione
			lastModify = new Date(c.getLastModified());
			if(begModify != lastModify)
			{
				System.out.println("Il sito "+url+" è stato modificato");
			}
		}
	}
	public void printURL()
	{
		System.out.println(url);
	}
	//Variabile contenente l'URL del sito
	private static URL url;
	//Variabile di stato, falso se la connessione non ha avuto
	//luogo e vero se la connessione è stata stabilita con successo
	private static boolean connected = false;
	//Variabile Stringa che contiene la data di modifica al momento di
avvio
	//del programma
	private static Date begModify;
	//Variabile Stringa che contiene la data di ultima modifica
registrata
	private static Date lastModify;
}
Considerate quindi questa classe:
import java.io.*;
import java.net.URL;
import javax.swing.JOptionPane;
import java.util.Vector;
public class File
{
	public static Vector<Website> LeggiFile()
	{
		Vector<Website> sitiTMP = new Vector<Website>();
		String nomeFile=JOptionPane.showInputDialog("Digita il nome del file
da leggere");
		BufferedReader fileLettura;
		try
		{
			fileLettura = new BufferedReader(new FileReader(nomeFile));
			while(true)
			{
				String linea = fileLettura.readLine();
				if (linea == null)
					break;
				URL x = new URL(linea);
				sitiTMP.add(new Website(x));
			}
			for (Website web: sitiTMP )
				web.printURL();
		}
		catch (FileNotFoundException e)
		{
			System.out.println("Il file "+nomeFile + " non esiste o non puo'
essere aperto");
			System.exit(-1);
		}
		catch (IOException e)
		{
			System.out.println("errore di lettura "+e);
			System.exit(-1);
		}
		return sitiTMP;
	}
}
La cosa assura è che se stampo gli URL dei siti mi stampa per n volte
(dove n è il numero di siti presenti nel file) l'URL dell'ultimo sito
inserito nel file. Qualcuno mi sa spiegare perchè??
Grazie!

Potrebbe dipendere dal contenuto del file. 

 Potrebbe dipendere dal contenuto del file.
Il contenuto del file sono stringhe del tipo
http://www.google.it
http://www.email.it
http://www.myspace.com
...
Dici che può essere??


Quegli "static" in Website non mi piacciono per nulla... in pratica
considera che ogni volta che costruisci un oggetto Website con
   sitiTMP.add(new Website(x));
esegui questo codice all'interno della classe Website
   url = x;
   URLConnection c = x.openConnection();
ma "url" è definito come statico, quindi ogni modifica di "url" in
un'istanza di Website riflette i cambiamenti in tutte le istanza di
Website allocate fino a questo momento. Ne hai la riprova proprio
grazie al tuo metodo printURL:
    public void printURL()
    {
        System.out.println(url);
    }
che in virtu' della staticità di "url", obbliga tutti gli oggetti
Website a utilizzare l'url dell'ultimo oggetto Website che hai creato.
Occhio, a voler ottimizzare troppo si rischia di avere inutili
grattacapi.
-- 
Scientology: se la conosci la eviti, se la conosci non ti uccide...
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx
 - 
http://www.xenu.net
(per rispondere personalmente leva IlDitoDalCulo)
---> 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 <---

 ---> 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 <---
PERFETTO!!!
Risolto tutto! Adesso funziona alla perfezzione!!
Grazie!

 inserito nel file. Qualcuno mi sa spiegare perchè??
perchè la proprietà URL di WebSite è static.