instanceof operator vs isInstance() metódus a Java nyelvben
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