Sobes.tech
Junior

Čo je to typové prevedenie (casting) v Jave?

sobes.tech AI

Odpoveď od AI

Prevod typov (casting) v Jave je pretvorba hodnoty jedného dátového typu na iný dátový typ.

Druhy prekladov:

  • Explicitný (zrejmý) casting: Vykonáva ho programátor pomocou operátora (typ). Používa sa na konverziu z "väčšieho" typu na "menší" (napríklad z double na int). Môže viesť ku strate dát.
    // implicitná konverzia (automatická)
    int a = 10;
    double b = a; // int na double
    
    // explicitná konverzia (zrejmá)
    double c = 10.5;
    int d = (int) c; // double na int, d bude 10
    
  • Implicitná (automatická) konverzia (Widening Conversion): Vykonáva sa automaticky JVM, keď sa konvertuje z "menšieho" na "väčší" typ (napríklad z int na double). Je bezpečná a nevedie ku strate dát.
    int x = 10;
    double y = x; // int automaticky na double
    

Prevod typov môže prebiehať medzi primitívnymi typmi alebo medzi objektmi v hierarchii dedičnosti.

Pri prevode objektov:

  • Upcasting: Konverzia podtriedy na jej supertriedu. Je implicitná a bezpečná.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Konverzia supertriedy na jej podtriedu. Vyžaduje explicitnú konverziu a môže spôsobiť ClassCastException počas behu, ak objekt nie je skutočne inštanciou cieľovej podtriedy.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - vyžaduje explicitnú konverziu a kontrolu pomocou instanceof
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Teraz je možné používať metódy špecifické pre Dog
    }