Sobes.tech
Junior

Šta je kastovanje (casting) u Javi?

sobes.tech АИ

Одговор од АИ

Prevođenje tipova (casting) u Javi je konverzija vrednosti jednog tipa podataka u drugi tip podataka.

Vrste prevođenja:

  • Ekslicitno (Explicit Casting): Izvršava ga programer pomoću operatora (tip). Koristi se za konverziju sa "većeg" na "manji" tip (npr. sa double na int). Može dovesti do gubitka podataka.
    // implicitno prevođenje (automatski)
    int a = 10;
    double b = a; // int u double
    
    // eksplicitno prevođenje (jasno)
    double c = 10.5;
    int d = (int) c; // double u int, d će biti 10
    
  • Implicitno (Automatsko) prevođenje (Widening Conversion): Automatski ga vrši JVM kada se konvertuje sa "manjeg" na "veći" tip (npr. sa int na double). Bezbedno je i ne izaziva gubitak podataka.
    int x = 10;
    double y = x; // int automatski u double
    

Prevođenje tipova može se desiti između primitivnih tipova ili između objekata u hijerarhiji naslednosti.

Kod prevođenja objekata:

  • Upcasting: Konverzija podklase u njenu superklasu. Implicitno i sigurno.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Konverzija superklase u njenu podklasu. Zahteva eksplicitnu konverziju i može izazvati ClassCastException tokom izvršenja ako objekat nije zaista instanca ciljne podklase.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - zahteva eksplicitnu konverziju i proveru sa instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Sada se mogu koristiti metode specifične za Dog
    }