Java - Enum Strings (Italiano)

Ciao a tutti, aspiranti programmatori Java! Oggi, entreremo nel fascinante mondo delle Enum Strings in Java. Non preoccupatevi se siete completamente nuovi alla programmazione – vi guiderò passo per passo, come ho fatto per innumerevoli studenti durante gli anni della mia insegnamento. Quindi, iniziamo questo emocionante viaggio insieme!

Java - Enum Strings

Cos'sono le Enums?

Prima di immergerci nelle Enum Strings, iniziamo dal principio. Le Enums, abbreviazione di "enumerazioni", sono un tipo speciale in Java che rappresenta un insieme fisso di costanti. Pensateli come una lista predefinita di opzioni che non cambierà durante l'esecuzione del vostro programma.

Immagina di creare un programma per una caffetteria. Potresti avere un set fisso di dimensioni di tazze: PICCOLA, MEDIA e GRANDE. Questo è un scenario perfetto per l'uso di un'enum!

Ecco come potremmo definire questa enum:

public enum CupSize {
PICCOLA,
MEDIA,
GRANDE
}

Ora, vediamo come possiamo utilizzare questa enum nel nostro codice:

public class CoffeeShop {
public static void main(String[] args) {
CupSize myOrder = CupSize.MEDIA;
System.out.println("Mi piacerebbe un caffè " + myOrder + ", per favore!");
}
}

Quando eseguiamo questo codice, otterremo: "Mi piacerebbe un caffè MEDIA, per favore!"

Enum Strings: Un Esame Più Vicino

Ora che comprendiamo cosa sono le enums, esploriamo le Enum Strings. Per impostazione predefinita, quando si stampa un valore enum, Java utilizza il suo nome come stringa. Ma cosa fare se si vuole personalizzare come i valori delle enums sono rappresentati come stringhe?

Ecco dove il metodo toString() diventa utile. Miglioriamo la nostra CupSize enum per fornire stringhe descrittive più dettagliate:

public enum CupSize {
PICCOLA("Piccola (8 oz)"),
MEDIA("Media (12 oz)"),
GRANDE("Grande (16 oz)");

private final String description;

CupSize(String description) {
this.description = description;
}

@Override
public String toString() {
return this.description;
}
}

Spiegiamo cosa sta accadendo:

  1. Abbiamo aggiunto un campo description alla nostra enum.
  2. Abbiamo creato un costruttore che prende questa descrizione come parametro.
  3. Abbiamo sovrascritto il metodo toString() per restituire la nostra descrizione personalizzata.

Ora, utilizziamo la nostra enum migliorata:

public class CoffeeShop {
public static void main(String[] args) {
CupSize myOrder = CupSize.MEDIA;
System.out.println("Mi piacerebbe un caffè " + myOrder + ", per favore!");
}
}

Questa volta, quando eseguiamo il codice, otterremo: "Mi piacerebbe un caffè Media (12 oz), per favore!"

Non è carino? abbiamo personalizzato come i nostri valori enum sono rappresentati come stringhe!

Lavorare con le Enum Strings

Ora che sappiamo come creare rappresentazioni stringa personalizzate per le nostre enums, esploriamo alcune operazioni comuni che potresti eseguire con le Enum Strings.

Convertire Enum in Stringa

Abbiamo già visto come convertire un enum in una stringa utilizzando il metodo toString(). Ma c'è un altro modo per ottenere il nome di una costante enum come stringa:

CupSize size = CupSize.GRANDE;
String sizeName = size.name();
System.out.println("Il nome dell'enum è: " + sizeName);

Questo produrrà: "Il nome dell'enum è: GRANDE"

Convertire Stringa in Enum

E se avessimo una stringa e volessimo convertirla indietro in un enum? Puoi utilizzare il metodo valueOf():

String sizeString = "PICCOLA";
CupSize size = CupSize.valueOf(sizeString);
System.out.println("L'enum convertito è: " + size);

Questo produrrà: "L'enum convertita è: Piccola (8 oz)"

Iterare sui Valori delle Enum

A volte, potresti voler iterare su tutti i valori in un enum. Puoi farlo utilizzando il metodo values():

System.out.println("Dimensioni di tazza disponibili:");
for (CupSize size : CupSize.values()) {
System.out.println("- " + size);
}

Questo produrrà:

Dimensioni di tazza disponibili:
- Piccola (8 oz)
- Media (12 oz)
- Grande (16 oz)

Esempio Pratico: Sistema di Ordine Caffè

Mettiamo tutto ciò che abbiamo imparato in un esempio più completo. Creeremo un semplice sistema di ordine caffè:

import java.util.Scanner;

public enum CoffeeType {
ESPRESSO("Un caffè forte preparato forzando acqua calda sotto pressione attraverso caffè macinato finemente."),
LATTE("Espresso con latte surriscaldato e una piccola strato di schiuma di latte in cima."),
CAPPUCCINO("Parti uguali di espresso, latte surriscaldato e schiuma di latte.");

private final String description;

CoffeeType(String description) {
this.description = description;
}

@Override
public String toString() {
return name() + ": " + this.description;
}
}

public class CoffeeShop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.println("Benvenuti nella nostra caffetteria!");
System.out.println("Ecco i nostri tipi di caffè disponibili:");
for (CoffeeType type : CoffeeType.values()) {
System.out.println("- " + type);
}

System.out.print("Che tipo di caffè vorresti? ");
String userChoice = scanner.nextLine().toUpperCase();

try {
CoffeeType chosenCoffee = CoffeeType.valueOf(userChoice);
System.out.println("Ottima scelta! Hai ordinato un " + chosenCoffee.name().toLowerCase() + ".");
} catch (IllegalArgumentException e) {
System.out.println("Spiacenti, non abbiamo questo tipo di caffè.");
}

scanner.close();
}
}

Questo programma esegue quanto segue:

  1. Definiamo una CoffeeType enum con descrizioni per ogni tipo di caffè.
  2. Nel metodo main, visualizziamo tutti i tipi di caffè disponibili per l'utente.
  3. Chiediamo all'utente di scegliere un tipo di caffè.
  4. Cerchiamo di convertire l'input dell'utente in un CoffeeType enum.
  5. Se avremo successo, confermiamo il loro ordine. Altrimenti, li informiamo che non abbiamo quel tipo di caffè.

Conclusione

Congratulazioni! Avete appena fatto un deep dive nel mondo delle Enum Strings in Java. Abbiamo coperto cosa sono le enums, come personalizzare le loro rappresentazioni stringa e come lavorare con loro in vari modi. Ricordate, le enums sono uno strumento potente in Java che può rendere il vostro codice più leggibile e meno soggetto a errori quando si tratta di un insieme fisso di costanti.

Mentre continuate il vostro viaggio in Java, troverete molti altri utilizzi per le enums. Sono particolarmente utili nelle istruzioni switch, per rappresentare stati in una macchina a stati o ovunque ci sia un set fisso di opzioni.

Seguite a praticare, rimanete curiosi e buon coding!

Credits: Image by storyset