Sobes.tech
Junior

Ինչ է տիպի փոխարկումը (casting) Java-ում։

sobes.tech AI

Պատասխան AI-ից

Տիպերի փոխարկում (casting) Java-ում նշանակում է արժեքի փոխակերպում մեկ տվյալ տիպից մյուսին:

Տիպերի փոխարկման տեսակները՝

  • Անհատական (Explicit Casting): Կատարում է ծրագրավորողը (տիպ) օպերատորով։ Օգտագործվում է մեծ տիպից փոքր տիպին փոխելու համար (օրինակ՝ double-ից int): Կարող է հանգեցնել տվյալների կորուստի։
    // ինքնաբերական փոխարկում (implicit)
    int a = 10;
    double b = a; // int-ից double
    
    // անհատական փոխարկում (հստակ)
    double c = 10.5;
    int d = (int) c; // double-ից int, d կլինի 10
    
  • Ինքնաբերական (Implicit) փոխարկում (Widening Conversion): Ավտոմատ կատարվում է JVM-ի կողմից, երբ փոխարկում է փոքր տիպից մեծ տիպ։ Անվտանգ է և չի հանգեցնում տվյալների կորուստի։
    int x = 10;
    double y = x; // int ավտոմատ փոխարկվում է double
    

Տիպերի փոխարկումը կարող է կատարվել հիմնական տիպերի կամ օբյեկտային տիպերի միջև ժառանգության հիերարխիայում։

Օբյեկտային տիպերի փոխարկում՝

  • Upcasting: Օբյեկտի ենթակլասից վերակլասին։ Ինքնաբերական և անվտանգ։
    class Animal {}
    class Dog extends Animal {}
    
    Animal animal = new Dog(); // Upcasting
    
  • Downcasting: Վերակլասից ենթակլաս։ Պահանջում է անհատական փոխարկում և կարող է առաջացնել ClassCastException ժամանակ գործարկման, եթե օբյեկտը իրականում չի հանդիսանում նպատակային ենթակլասի օրինակ։
    Animal animal = new Dog(); // Upcasting
    
    // Downcasting - պահանջում է անհատական փոխարկում և `instanceof` ստուգում
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
        // Այժմ կարող է օգտագործել Dog-ի հատուկ մեթոդները
    }