The instanţă de operator și isInstance() metoda ambele sunt folosite pentru verificarea clasei obiectului. Dar principala diferență vine atunci când dorim să verificăm clasa de obiecte în mod dinamic, atunci metoda isInstance() va funcționa. Nu există nicio modalitate de a face acest lucru de către operatorul instanceof.
Metoda isInstance este echivalentă cu operatorul instanceof. Metoda este utilizată în cazul în care obiectele sunt create în timpul execuției folosind reflectarea. Practica generală spune că dacă tipul trebuie verificat în timpul execuției, atunci utilizați metoda isInstance, altfel poate fi utilizat operatorul instanceof.
curs de matematică java
Instanța operatorului și Metoda isInstance() returnează ambele o valoare booleană. Metoda isInstance() este o metodă a clasei Class în java, în timp ce instanceof este un operator.
Luați în considerare un exemplu:
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); } }
Ieșire:
true
Acum, dacă vrem să verificăm clasa obiectului în timpul rulării, atunci trebuie să folosim isInstance() metodă.
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); } }
Ieșire:
true false true
JavaNota: operatorul instanceof aruncă o eroare de compilare (Tipuri de operanzi condiționate incompatibile) dacă verificăm obiectul cu alte clase pe care nu le instanțează.
metode java arraylist
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); } }
Ieșire:
9: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^
Trebuie citit:
- operator nou vs metoda newInstance() în Java
- Reflecții în Java