The instanceof operater i isInstance() obje metode se koriste za provjeru klase objekta. Ali glavna razlika dolazi kada želimo dinamički provjeriti klasu objekata, tada će metoda isInstance() raditi. Ne postoji način na koji to možemo učiniti operatorom instanceof.
Metoda isInstance ekvivalentna je operatoru instanceof. Metoda se koristi u slučaju da se objekti kreiraju tijekom izvođenja pomoću refleksije. Opća praksa kaže da ako tip treba provjeriti tijekom izvođenja, tada koristite metodu isInstance, inače se može koristiti operator instanceof.
Instanca operatora and obje metode isInstance() vraćaju Booleovu vrijednost. Metoda isInstance() je metoda klase Class u Javi dok je instanceof operator.
Razmotrite primjer:
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); } }
Izlaz:
true
Sada ako želimo provjeriti klasu objekta u vrijeme izvođenja tada moramo koristiti isInstance() metoda.
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); } }
Izlaz:
true false true
JavaBilješka: instanceof operator izbacuje pogrešku u vrijeme kompajliranja (Nekompatibilni uvjetni tipovi operanda) ako provjeravamo objekt s drugim klasama koje on ne instancira.
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); } }
Izlaz:
9: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^
Obavezno pročitati:
nizovi java
- new operator vs newInstance() metoda u Javi
- Refleksije u Javi