logo

instanceof operator vs isInstance() Metode i Java

De forekomst av operatør og isInstance() metoden brukes begge for å sjekke klassen til objektet. Men hovedforskjellen kommer når vi ønsker å sjekke klassen av objekter dynamisk, så vil isInstance()-metoden fungere. Det er ingen måte vi kan gjøre dette ved hjelp av instanceof operator.

Metoden isInstance tilsvarer instanceof operator. Metoden brukes i tilfelle objekter opprettes under kjøring ved bruk av refleksjon. Generell praksis sier at hvis typen skal kontrolleres ved kjøring, bruk isInstance-metoden ellers kan instanceof-operator brukes.

Forekomsten av operatør og isInstance()-metoden returnerer begge en boolsk verdi. isInstance()-metoden er en metode av klassen Class i java mens instanceof er en operator. 



array java

Tenk på et eksempel:

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);  } } 

Produksjon: 

true

Hvis vi nå ønsker å sjekke klassen til objektet ved kjøring, må vi bruke isInstance() metode.

multithreading i java
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);  } } 

Produksjon: 

true false true

Note: instanceof operator kaster kompileringstidsfeil (Inkompatible betingede operandtyper) hvis vi sjekker objekt med andre klasser som det ikke instansierer.

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);  } } 

Utgang:  

hva er const i java
9: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^

Må leses:

  • new operator vs newInstance()-metoden i Java  
  • Refleksjoner i Java