Sobes.tech
Junior

Ce este casting-ul în Java?

sobes.tech AI

Răspuns de la AI

Conversia tipurilor (casting) în Java este transformarea valorii unui tip de date într-alt tip de date.

Tipuri de conversie:

  • Conversie explicită (Explicit Casting): Se face de către programator folosind operatorul (tip). Se folosește pentru a converti de la un tip "mai mare" la un tip "mai mic" (de exemplu, de la double la int). Poate duce la pierderea datelor.
    // conversie implicită (automat)
    int a = 10;
    double b = a; // int la double
    
    // conversie explicită (declarată)
    double c = 10.5;
    int d = (int) c; // double la int, d va fi 10
    
  • Conversie implicită (Implicit Casting / Widening Conversion): Se face automat de JVM atunci când se convertește de la un tip "mai mic" la un tip "mai mare" (de exemplu, de la int la double). Este sigură și nu duce la pierderea datelor.
    int x = 10;
    double y = x; // int convertit automat în double
    

Conversia tipurilor poate avea loc între tipuri primitive sau între tipuri de obiecte în ierarhia de moștenire.

Pentru conversia tipurilor de obiecte:

  • Upcasting: Convertirea unei subclase în superclasa sa. Este implicită și sigură.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Convertirea unei superclase în subclasa sa. Necesită o conversie explicită și poate arunca ClassCastException în timpul execuției dacă obiectul nu este de fapt o instanță a subclasei țintă.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - necesită o conversie explicită și verificare cu instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Acum se pot folosi metode specifice pentru Dog
    }