Il linguaggio Java
Dott. Ing. M. Banci, PhD
) import
java.util.Vector;
) in
realtà: fa considerare Vector
abbreviazione di java.util.Vector
) La dichiarazione import permette di
riferirsi alla classe utilizzando il nome
breve senza l'indicazione del package a
cui appartiene la classe.
8 Giugno 2007
Esercitazione Java - 1
2
senza import
Vector v = new Vector();
// Class not found in compilazione java
util.Vector = new java.util.Vector();
// è necessario
8 Giugno 2007
Esercitazione Java - 1
3
)
)
Se non avessimo fatto questa dichiarazione, per
creare l'oggetto Vector e per dichiarare variabili per
tipo Vector occorreva utilizzare il nome completo
java.util.Vector. È importante capire che questa
dichiarazione non inserisce niente nel testo del
programma compilato: semplicemente permette di
abbreviare il nome della classe.
Di solito si fanno delle classi che nascono in un
package e poi migrano ad altri package. Usare la
dichiarazione dei package e in maniera consistente
permette di correggere il codice semplicemente
cambiando le dichiarazioni package e import all'inizio
di ogni file. Usare nel testo di un programma il nome
lungo complica questi spostamenti abbastanza
comuni.
8 Giugno 2007
Esercitazione Java - 1
4
import
import java.util.*;
importa tutte le classi del package.
Fa cercare le classi non trovare in java.util
8 Giugno 2007
Esercitazione Java - 1
5
A volte sono numerose le classi che devono essere
utilizzate, ma in generale tendono a trovarsi in pochi
package. È possibile importare un intero package: si utilizza
l'asterisco (*) al posto del nome della classe. In ogni caso
come l'importazione non di inserisce nulla, anche l'uso della
importazione globale non inserisce nulla ma comunica al
compilatore di utilizzare il package indicati per ricercare
classi che non sono state trovate. Normalmente è possibile
utilizzare direttamente classi che si trovano allo stesso
package della classe senza importarle.
8 Giugno 2007
Esercitazione Java - 1
6
Possibili collisioni
import java.util.*;
import java.sql.*;
// ambiguo: java.util.Date o java.sql.Date?
Date d = new Date ();
// ERRORE
import java.util.*;
import java.sql.*;
import java.sql.Date;
java.util.Date=new java.util.Date(); // usa java.util.Date
Date = new Date(); // usa java.sql.Date
Esiste la possibilità di collisioni: per esempio se si importano i due
package java.util.* e java.sql.*, troviamo che la classe Date
si trova in entrambi i package. Allora quale dei due deve essere
utilizzata: il compilatore segnala un errore. In un questi casi o sui usa
esplicitamente il nome lungo, oppure si può disambiguare utilizzando
dopo la import con *, anche una import specifica, come nell'esempio.
8 Giugno 2007
Esercitazione Java - 1
7
Sempre implicito
)
import java.lang.*;
)
per System, String, Thread, etc non
occorrono import
)
Alcune classi vengono automaticamente
importate: in particolare è sempre implicito un
import java.lang.*; in questo modo
non è necessario importare classi di uso
molto comune come quelle già dette.
8 Giugno 2007
Esercitazione Java - 1
8