Oltre a quanto detto da LeleFT, aggiungo che le dichiarazioni di import, in generale, servono per far si che nel sorgente si possa usare un simple name invece di un fully qualified name.
Mi spiego meglio, nel sorgente posso scrivere:
codice:
java.io.FileInputStream fis = new java.io.FileInputStream ("pippo.txt");
In questo caso non ci sarebbe bisogno di alcun import, è stato usato un nome completamente qualificato. Naturalmente non è affatto comodo.
Si potrebbe quindi fare:
codice:
import java.io.FileInputStream;
FileInputStream fis = new FileInputStream ("pippo.txt");
e sarebbe già meglio ma varrebbe per un solo tipo (e bisognerebbe fare altri import per gli altri tipi in java.io).
Si può invece usare un type-import-on-demand:
codice:
import java.io.*;
FileInputStream fis = new FileInputStream ("pippo.txt");
Il compilatore andrà a cercare il tipo FileInputStream nei vari package importati on-demand (nel caso sopra java.io).
È chiaro che è ambiguo e quindi un errore di compilazione, se un simple name può fare riferimento a tipi diversi in package diversi importati on demand.
Esempio:
codice:
import java.awt.*;
import java.util.*;
...
List l; // Errore, esiste un java.awt.List ma esiste anche java.util.List!!