Sobes.tech
Junior

Cos'è il casting in Java?

sobes.tech AI

Risposta dell'AI

Il casting dei tipi in Java è la conversione del valore di un tipo di dato in un altro.

Tipi di casting:

  • Casting esplicito (Explicit Casting): Eseguito dal programmatore usando l'operatore (tipo). Usato per convertire da un tipo "maggiore" a uno "minore" (ad esempio, da double a int). Può causare perdita di dati.
    // casting implicito (automatico)
    int a = 10;
    double b = a; // int a double
    
    // casting esplicito (dichiarato)
    double c = 10.5;
    int d = (int) c; // double a int, d sarà 10
    
  • Casting implicito (Implicit Casting / Widening Conversion): Eseguito automaticamente dalla JVM quando si converte da un tipo "minore" a uno "maggiore" (ad esempio, da int a double). È sicuro e non provoca perdita di dati.
    int x = 10;
    double y = x; // int convertito automaticamente in double
    

La conversione di tipi può avvenire tra tipi primitivi o tra tipi di oggetti in una gerarchia di ereditarietà.

Per la conversione di tipi di oggetti:

  • Upcasting: Conversione di una sottoclasse alla sua superclasse. È implicito e sicuro.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Conversione di una superclasse alla sua sottoclasse. Richiede una conversione esplicita e può generare ClassCastException a runtime se l'oggetto non è effettivamente un'istanza della sottoclasse di destinazione.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - richiede una conversione esplicita e un controllo con instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Ora è possibile usare metodi specifici di Dog
    }