Operator Java példánya

1. Bemutatkozás

Ebben a gyors bemutatóban megismerhetjük a Például az operátor Java-ban.

2. Mi az Például az Operátor?

instanceof is egy bináris operátor, amelyet annak tesztelésére használnak, hogy egy objektum adott típusú-e. A művelet eredménye vagy igaz vagy hamis. Típus-összehasonlító operátornak is nevezik, mert összehasonlítja a példányt a típussal.

Mielőtt leadna egy ismeretlen tárgyat, a Például az mindig ellenőrizni kell. Ez segít elkerülni ClassCastException futás közben.

A Például az az operátor alapvető szintaxisa:

(object) instanceof (type)

Lássunk egy alapvető példát a Például az operátor. Először hozzunk létre egy osztályt Kerek:

nyilvános osztály forduló {// megvalósítás részletei}

Ezután hozzunk létre egy osztályt Gyűrű hogy kiterjed Kerek:

a közönség osztálya a Ring kört nyújt

Tudjuk használni Például az hogy ellenőrizze, hogy van-e Gyűrű a Kerek típus:

@Test public void givenWhenInstanceIsCorrect_thenReturnTrue () {Ring ring = new Ring (); Assert.assertTrue (a ring kör példánya); }

3. Hogyan működik a Például az Operátor munka?

A Például az operátor az is-a kapcsolat elvén működik. Az is-a kapcsolat fogalma az osztály öröklődésén vagy az interfész megvalósításán alapul.

Ennek bemutatásához hozzunk létre egy Alak felület:

nyilvános felület alakja {// megvalósítás részletei}

Hozzunk létre egy osztályt is Kör hogy megvalósítja a Alak interfészt, és kiterjeszti a Kerek osztály:

nyilvános osztály A kör kiterjeszti a kerek eszközöket Alakzat {// megvalósítás részletei}

A Például az eredmény lesz igaz ha az objektum egy ilyen típusú példány:

@Test public void givenWhenObjectIsInstanceOfType_thenReturnTrue () {Kör kör = új Kör (); Assert.assertTrue (a kör kör példánya); }

Az is lesz igaz ha az objektum egy típusú alosztály példánya:

@Test public void giveWhenInstanceIsOfSubtype_thenReturnTrue () {Kör kör = új Kör (); Assert.assertTrue (a kör kör példánya); }

Ha a típus interfész, akkor visszatér igaz ha az objektum megvalósítja az interfészt:

@Test public void givenWhenTypeIsInterface_thenReturnTrue () {Kör kör = új Kör (); Assert.assertTrue (Alak kör példánya); }

Példánya operátor nem használható, ha nincs kapcsolat az összehasonlítandó objektum és az összehasonlítandó típus között.

Hozzunk létre egy új osztályt Háromszög hogy megvalósítja Alak de nincs kapcsolata vele Kör:

A háromszög nyilvános osztálya végrehajtja az Alakot {// megvalósítás részletei}

Most, ha használjuk Például az ellenőrizni, hogy a Kör példánya Háromszög:

@Test public void givenWhenComparingClassInDiffHierarchy_thenCompilationError () {Kör kör = új Kör (); Assert.assertFalse (háromszög körpéldánya); }

Összeállítási hibát fogunk kapni, mert a Kör és a Háromszög osztályok:

java.lang.Error: Megoldatlan fordítási probléma: Kompatibilis feltételes operandus típusok Circle and Triangle

4. Használata Például az a ... val Tárgy típus

A Java-ban minden osztály implicit módon örökli a Tárgy osztály. Ezért a Például az üzemeltető a Tárgy típus mindig értékelni fog igaz:

@Test public void givenWhenTypeIsOfObjectType_thenReturnTrue () {Thread thread = new Thread (); Assert.assertTrue (objektum szál példánya); }

5. A Például az Operátor, ha egy objektum van nulla

Ha a Például az operátor minden olyan objektumon, ami van nulla, visszatér hamis. Ezenkívül nincs szükség nullellenőrzésre egy Például az operátor.

@Test public void givenWhenInstanceValueIsNull_thenReturnFalse () {Kör kör = null; Assert.assertFalse (a kör kör példánya); }

6. Például az és a Generics

A példánytesztek és leadások a típusinformációk futás közbeni ellenőrzésétől függenek. Ezért nem használhatjuk Például az törölt általános típusokkal együtt.

Például, ha megpróbáljuk összeállítani a következő részletet:

public static void sort (Listagyűjtemény) {if (a Lista gyűjteményes példánya) {// a karakterláncokat máshogy rendezi} // kihagyva}

Akkor ezt az összeállítási hibát kapjuk:

hiba: illegális általános típus például az if-hez (Lista gyűjteményes példánya) {^

Technikailag csak annyit használhatunk Például az reifikálódással együtttípusok Java-ban. A típus újraértékelésre kerül, ha a típusinformáció futás közben jelen van.

A Java újratervezett típusai a következők:

  • Az olyan primitív típusok, mint int
  • Nem általános osztályok és interfészek, mint Húr vagy Véletlen
  • Általános típusok, amelyekben minden típus nem korlátozott helyettesítő karakter Készlet vagy Térkép
  • Nyers típusok, mint List vagy HashMap
  • Más újrafelhasználható típusú tömbök, például Karakterlánc [], Lista [], vagy Térkép[]

Mivel az általános típusú paramétereket nem igazoljuk újra, ezért ezeket sem használhatjuk:

public static boolean isOfType (Object input) {T visszatérő bemeneti példánya T; // nem fordít}

Tesztelni azonban ilyesmi ellen lehet Lista:

if (Lista gyűjteményes példánya) {// csináljon valamit}

7. Következtetés

Ebben az oktatóanyagban megtudtuk a Például az üzemeltető és hogyan kell használni. A teljes kódminták elérhetők a GitHub oldalon.