InstanceOf In je operátor, který se používá ke kontrole typu objektu. Jinými slovy testuje, zda je objekt instancí konkrétní třídy nebo rozhraní. Výstup takové operace je buď Skutečný nebo Nepravdivé
V tomto článku se budeme zabývat následujícími ukazateli,
- instanceOf
- Použití proměnné s nulovou hodnotou
- Nadřazený objekt není instancí podřízeného objektu
- Downcasting
- Porozumění instanceOf
Pokračujeme tímto článkem o instanceOf v Javě.
Tento operátor je také známý jako typ operátor porovnání , protože instance je porovnávána s typem.
Syntax:
(object) instanceof (type)
Níže je uveden příklad operátoru instanceOf:
public class Main {public static void main (String [] args) {Main s = new Main () System.out.println (s instanceof Main)}}
Výstup
skutečný
V příkladu je výstup vrácený uživateli skutečný , tj. ' s „Je instance třídy Main.
pomocí r pro strojové učení
Příklad
Objekt podtřídy typu je také typ nadřazené třídy.
V následujícím příkladu rozšiřuje Rock Music. Na předmět Rock lze odkazovat buď ve třídě Rock, nebo Music.
třída Hudba {} třída Rock rozšiřuje hudbu {// Rock dědí hudbu veřejnou statickou void main (String args []) {Rock r = new Rock () System.out.println (r instanceof Rock)}}
Výstup
skutečný
Pokračujeme tímto článkem o instanceOf v Javě.
Použití proměnné s nulovou hodnotou
třída Hudba {public static void main (String args []) {Music m = null System.out.println (m instanceof Music) // false}}
V příkladu uvedeném výše má definovaná proměnná nulovou hodnotu.
Vrácený výstup je tedy false.
Výstup
Nepravdivé
Při používání operátoru instanceOf je třeba poznamenat následující bod:
Pokračujeme tímto článkem o instanceOf v Javě.
Nadřazený objekt není instancí Child
class Parent {} class Child extends Parent {} class Main {public static void main (String [] args) {Parent p = new Parent () if (p instanceof Child) System.out.println ('p je instance of Child ') else System.out.println (' p není instancí Child ')}}
Výstup
P není instancí Child
Pokračujeme tímto článkem o instanceOf v Javě.
Downc poutavý
Když se na objekt nadřazené třídy odkazuje podtřída, metoda se nazývá downcasting.
Při přímém provádění downcastingu kompilátor vrátí chybu kompilace.
Rock r = new Music () // chyba kompilace
Při použití Typecastingu je ClassCastException vyvolána za běhu.
Rock r = (Rock) new Music () // kompilace úspěšná, ale ClassCastException vyvolána
Jedinou metodou, pomocí které je možné downcasting, je použití operátoru instanceof.
kdy to použít v Javě
class Music {} class Rock extends Music {static void method (Music m) {if (m instanceof Rock) {Rock r = (Rock) m // downcasting System.out.println ('Downcasting Successful')}} public static void main (String [] args) {Music m = new Rock () Rock.method (m)}}
Výstup
Downcasting byl úspěšný
Pokračujeme tímto článkem o instanceOf v Javě.
Porozumění instanceOf:
Metodu instanceOf lze lépe pochopit pomocí níže uvedených příkladů:
Tento příklad umožňuje použití rozhraní:
instance rozhraní {} třída S implementuje instanci {public void s () {System.out.println ('First method')}} třída T implementuje instanci {public void t () {System.out.println ('Second method') }} třída Invoke {void invoke (Instance i) {// upcasting if (i instanceof S) {S s = (S) i // Downcasting ss ()} if (i instanceof T) {T t = (T) i // Downcasting tt ()}}} třída Main {public static void main (String args []) {Instance i = new T () Invoke v = new Invoke () v.invoke (i)}}
Výstup příkladu je následující:
Druhá metoda
Tento příklad přesně ukazuje tento koncept. Tady je mateřská třída Instrument a dvě podřízené třídy jsou Guitar a Piano:
class Instrument {} class Guitar extends Instrument {} class Piano extends Instrument {} class Main {public static void main (String [] args) {Instrument i = new Instrument () Guitar g = new Guitar () Piano p = new Piano ( ) System.out.println (g instanceof Instrument) System.out.println (p instanceof Instrument) System.out.println (i instanceof Guitar) System.out.println (i instanceof Piano) i = g System.out.println ( i instanceof Guitar) System.out.println (i instanceof Piano) i = p System.out.println (i instanceof Guitar) System.out.println (i instanceof Piano)}}
Výstup je následující:
skutečný
skutečný
Nepravdivé
Nepravdivé
skutečný
co je anakonda pro python
Nepravdivé
Nepravdivé
skutečný
Takto je efektivně nalezen typ objektu. Operátor instanceOf se ukazuje jako docela užitečný, vzhledem k tomu, že jsou metody prováděny správně.
Tak jsme dospěli ke konci tohoto článku o „instanceOf v Javě“. Pokud se chcete dozvědět více, podívejte se na Java Training by Edureka, důvěryhodná online vzdělávací společnost. je navržen tak, aby vás naučil jak základní, tak pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.
Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.