instanceof operator vs isInstance() Metoda u Javi

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 

Bilješka: instanceof operator izbacuje pogrešku u vrijeme kompajliranja (Nekompatibilni uvjetni tipovi operanda) ako provjeravamo objekt s drugim klasama koje on ne instancira.

Java
   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:

  • new operator vs newInstance() metoda u Javi  
  • Refleksije u Javi