logo

instanceof operator vs isInstance() metode i Java

De forekomst af operatør og isInstance() metode bruges begge til at kontrollere objektets klasse. Men den største forskel kommer, når vi ønsker at kontrollere klassen af ​​objekter dynamisk, så vil isInstance()-metoden fungere. Der er ingen måde, vi kan gøre dette ved hjælp af instanceof operator.

isInstance-metoden svarer til instanceof-operator. Metoden bruges i tilfælde af, at objekter oprettes under kørsel ved hjælp af refleksion. Generel praksis siger, at hvis typen skal kontrolleres ved kørsel, skal du bruge isInstance-metoden, ellers kan instanceof-operatoren bruges.

Forekomsten af ​​operatør og metoden isInstance() returnerer begge en boolsk værdi. metoden isInstance() er en metode af klassen Class i java, mens instanceof er en operator. 



array java

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

Produktion: 

true

Hvis vi nu vil kontrollere objektets klasse ved kørsel, skal vi bruge 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);  } } 

Produktion: 

true false true

Note: instanceof operator kaster kompileringstidsfejl (Inkompatible betingede operandtyper), hvis vi tjekker 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);  } } 

Output:  

år ind i kvartaler
9: error: incompatible types: Integer cannot be converted to String System.out.println(i instanceof String); ^

Skal læses:

  • new operator vs newInstance() metode i Java  
  • Refleksioner i Java