Sobes.tech
Junior

оператори instanceof барои чӣ истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Оператор instanceof дар Java истифода мешавад, барои санҷидани он, ки оё объект ба синфи муайян тааллуқ дорад ё интерфейси муайянро иҷро мекунад.

Барномаҳо:

  1. Санҷиши навъи объект пеш аз табдил додан: Имкон медиҳад, ки табдили навъ (type casting) бо хавфи камтар анҷом дода шавад, яъне бехатар аст, бе хатари ClassCastException.
  2. Иҷрои рафтори полиморфӣ: Дар баъзе ҳолатҳо, метавонад барои муайян кардани навъи мушаххаси объект ҳангоми кор бо коллексияҳо ё объектҳое, ки ҳамчун аргументҳои навъи умумӣ дода шудаанд, истифода шавад.
  3. Коркарди намудҳои гуногуни маълумот: Имкон медиҳад, ки логикаи барнома дар асоси навъи объект тақсим карда шавад.

Масалан:

// Тартиби муайян кардани суперкласс ва субкласс
class Animal {}
class Dog extends Animal {}

// Эҷоди объектҳо
Animal myAnimal = new Dog();
Animal anotherAnimal = new Animal();

// Истифодаи `instanceof`
if (myAnimal instanceof Dog) {
    // Иҷрои амалҳои махсус барои Dog
    Dog myDog = (Dog) myAnimal; // Табдили навъи бехатар
    System.out.println("myAnimal, намунаи Dog.");
}

if (anotherAnimal instanceof Dog) {
    // Ин блок иҷро намешавад
    System.out.println("anotherAnimal, намунаи Dog.");
} else {
    System.out.println("anotherAnimal, намунаи Dog нест.");
}

Истифодаи зиёди instanceof метавонад нишон диҳад, ки дар тарҳсозӣ мушкил вуҷуд дорад, ки дар он полиморфизм дуруст истифода намешавад. Дар аксари ҳолатҳо, истифодаи фармонҳои полиморфӣ беҳтар аст.