In Java, il letterale null viene usato per indicare l'assenza di un valore.
I tipi di dati primitivi in Java hanno tutti un valore predefinito e quindi non possono mai essere null. Per convenzione, iniziano con una lettera minuscola, ad esempio int.
I tipi di riferimento contengono l'indirizzo di memoria di un oggetto e possono avere valore null. In genere iniziano con una lettera maiuscola, ad esempio String.
Tentare di assegnare a una variabile primitiva un valore null causerà un errore in fase di compilazione, poiché la variabile contiene sempre un valore primitivo del tipo assegnato.
//Throws compile time error stating the required type is int, but null was provided
int number = null;
Assegnare a una variabile di riferimento un valore null non causerà un errore in fase di compilazione, poiché le variabili di riferimento possono essere null.
//No error will occur as the String variable str is nullable
String str = null;
In questo esercizio scriverai il codice per stampare i badge con il nome dei dipendenti della fabbrica.
I dipendenti hanno un ID, un nome e il nome del reparto. Le etichette dei badge dei dipendenti hanno il seguente formato: "[id] - name - DEPARTMENT".
Implementa il metodo Badge.print() in modo che restituisca l'etichetta del badge di un dipendente:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
Nota che il reparto va scritto in maiuscolo sull'etichetta.
A causa di una stranezza del sistema informatico, ogni tanto i nuovi dipendenti non hanno ancora un ID quando iniziano a lavorare in fabbrica.
Dato che il badge è obbligatorio, riceveranno un badge temporaneo senza il prefisso dell'ID. Modifica il metodo Badge.print() per gestire i nuovi dipendenti che non hanno ancora un ID:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
Anche il proprietario della fabbrica deve indossare un badge in ogni momento.
Il proprietario, però, non ha un reparto. In questo caso, l'etichetta deve stampare "OWNER" al posto del nome del reparto.
Modifica il metodo Badge.print() per stampare l'etichetta del proprietario:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
Nota che il proprietario può essere anche un nuovo dipendente:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"
Iscriviti a Exercism per imparare e padroneggiare Java con 26 concetti158 esercizi e il mentoring di persone reali, tutto gratis.