Sobes.tech
Junior

Mi az a típuskonverzió (casting) Java-ban?

sobes.tech MI

Válasz az MI-től

A típuskonverzió (casting) Java-ban az egyik adattípus értékének átalakítása egy másik adattípus értékévé.

A konverzió típusai:

  • Kifejezett (Explicit Casting): A programozó (típus) operátorával végzi. Használható a "nagyobb" típusból a "kisebb" típusba való átalakításra (pl. double-ről int-re). Ez adatvesztést okozhat.
    // implicit konverzió (automatikus)
    int a = 10;
    double b = a; // int-ről double-ra
    
    // explicit konverzió (meghatározott)
    double c = 10.5;
    int d = (int) c; // double-ről int-re, d értéke 10 lesz
    
  • Implicit (Automatikus) típuskonverzió (Widening Conversion): Automatikusan végrehajtódik a JVM által, amikor egy "kisebb" típusból egy "nagyobb" típusba konvertálunk (pl. int-ről double-re). Biztonságos, és nem okoz adatvesztést.
    int x = 10;
    double y = x; // int automatikusan double lesz
    

A típuskonverzió lehet primitív típusok vagy objektumtípusok között is, az öröklődési hierarchiában.

Objektumtípusok közötti konverzió:

  • Upcasting: Egy alosztályt a szuperosztályába konvertálunk. Implicit és biztonságos.
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Egy szuperosztályt az alosztályába konvertálunk. Explicit konverziót igényel, és futásidőben ClassCastException-t okozhat, ha az objektum nem valódi példánya a céltípusnak.
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - explicit konverzió és instanceof ellenőrzés
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Most már használhatók a Dog-specifikus metódusok
    }