I pacchetti (packages) in Java vengono utilizzati per la raggruppazione logica di classi, interfacce e sottopacchetti. Questo aiuta a strutturare progetti di grandi dimensioni, migliorare la leggibilità e il riutilizzo del codice.
Funzioni principali dei pacchetti:
Creazione e utilizzo di un pacchetto:
package com.example.utils; public class MathUtils { public static int sum(int a, int b) { return a + b; } }
Per utilizzare una classe da un altro pacchetto:
import com.example.utils.MathUtils; public class Test { public static void main(String[] args) { System.out.println(MathUtils.sum(5, 7)); } }
È possibile definire un pacchetto a metà file di classe Java o non nella prima riga?
Risposta: No, la direttiva package deve essere la prima (non vuota) riga del file sorgente Java.
// Non corretto! import java.util.*; package com.example; // Errore di compilazione public class MyClass {}
Storia
In un progetto reale è stata dimenticata la direttiva
packageall'inizio del file. Dopo la compilazione, la classe è finita nel pacchetto di default, portando a conflitti con classi omonime di altre librerie. Di conseguenza, si sono verificati errori di tipo e problemi durante la creazione del file JAR.
Storia
In un grande team che lavora con più pacchetti (ad esempio, com.example e com.Example) è emerso un problema di incompatibilità tra Linux e Windows – Windows ignora il maiuscolo nei percorsi, Linux no. Questo ha causato errori inaspettati in produzione dopo il deployment su un server Linux.
Storia
Uno sviluppatore ha accidentalmente dato accesso
protecteda metodi importanti, pensando che non potessero essere visti dall'esterno, ma non ha considerato che le classi all'interno di uno stesso pacchetto possono accedere a questi membri. Questo ha causato una fuga della logica di business interna attraverso un'API non destinata all'uso esterno.