A példánya operátor és isPéldány() mindkettőt az objektum osztályának ellenőrzésére használják. De a fő különbség az, hogy dinamikusan szeretnénk ellenőrizni az objektumok osztályát, akkor az isInstance() metódus fog működni. Ezt az instanceof operátorral nem tudjuk megtenni.
Az isInstance metódus egyenértékű az instanceof operátorral. A módszert akkor használják, ha az objektumok futás közben, tükrözéssel jönnek létre. Az általános gyakorlat szerint ha a típust futás közben kell ellenőrizni, akkor használja az isInstance metódust, különben az instanceof operátor használható.
Az operátor és Az isInstance() metódus egyaránt logikai értéket ad vissza. Az isInstance() metódus a Class osztály metódusa a java-ban, míg az instanceof egy operátor.
Vegyünk egy példát:
Java// Java program to demonstrate working of // instanceof operator public class Test { public static void main(String[] args) { Integer i = new Integer(5); // prints true as i is instance of class // Integer System.out.println(i instanceof Integer); } }
Kimenet:
true
Most, ha ellenőrizni akarjuk az objektum osztályát futás közben, akkor használnunk kell isPéldány() módszer.
Java// Java program to demonstrate working of isInstance() // method public class Test { // This method tells us whether the object is an // instance of class whose name is passed as a // string 'c'. public static boolean fun(Object obj String c) throws ClassNotFoundException { return Class.forName(c).isInstance(obj); } // Driver code that calls fun() public static void main(String[] args) throws ClassNotFoundException { Integer i = new Integer(5); // print true as i is instance of class // Integer boolean b = fun(i 'java.lang.Integer'); // print false as i is not instance of class // String boolean b1 = fun(i 'java.lang.String'); // print true as i is also instance of class // Number as Integer class extends Number // class boolean b2 = fun(i 'java.lang.Number'); System.out.println(b); System.out.println(b1); System.out.println(b2); } }
Kimenet:
true false true
JavaJegyzet: Az instanceof operátor fordítási idejű hibát dob (inkompatibilis feltételes operandustípusok), ha más osztályokkal ellenőrizzük az objektumot, amelyeket nem példányosít.
public class Test { public static void main(String[] args) { Integer i = new Integer(5); // Below line causes compile time error:- // Incompatible conditional operand types // Integer and String System.out.println(i instanceof String); } }
Kimenet:
9: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^
El kell olvasni:
- új operátor vs newInstance() metódus Java-ban
- Reflexiók Java nyelven