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.