Un package è un “contenitore” che raccogliere al suo interno una serie di classi, o anche altri packages, in qualche modo logicamente legati tra loro.
Raggruppando le classi affini in package, miglioriamo l’organizzazione del codice e impediamo i conflitti tra classi con nomi uguali: ad esempio due classi di nome Prova possono coesistere in due package diversi, senza che ci sia nessun errore di compilazione o altro.
Java fornisce diversi package in cui sono presenti varie classi, suddivise per funzionalità, come ad esempio java.io che contiene le classi per l’input e l’output. Si può anche creare un proprio package, utilizzando la keyword package come prima riga del file .java.
Più precisamente, se si desidera creare una classe A che appartenga al package mypackage, allora sarà necessario scrivere all’interno del file A.java
package mypackage; public class A { ... corpo della classe ... }
In questo caso, al momento della compilazione verrà generata una directory denominata mypackage ed il file A.class verrà automaticamente posizionato in tale directory. Nell’eventualità in cui si voglia creare un ulteriore package (denominato mypackage2), annidato all’interno di mypackage, si dovrà scrivere
package mypackage.mypackage2; public class A2 { ... corpo della classe ... }
Analogamente al caso precedente, la classe generata dal compilatore verrà posizionata nella directory mypackage/mypackage2.
Per utilizzare una classe che appartiene ad un altro package, si usa la keyword import con il nome del package da importare.
Esempio
Se volessimo usare, nella nostra classe Prova, una istanza della classe Impiegato, che si trova nel package com, è sufficiente scrivere, ad un inizio file:
import com.Impiegato; public class ProvaA { private void hello() { Impiegato i = new Impiegato(); }
Nel caso volessimo importare tutte le classi di un determinato package, la sintassi da seguire è:
import <nome package>.*
Esempio
import com.*;
Per quanto riguarda i nomi da assegnare ai package, lo standard prevede di far precedere a ogni nome di package il dominio Internet invertito dell’ente per cui si lavora.
Esempio
Se il dominio della azienda è:
pippo.com
allora tutte le classi devono essere catalogati in sottopackage, il cui nome inizia con
com.pippo.