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 javaJava
// 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
JavaNote: instanceof operator kaster kompileringstidsfejl (Inkompatible betingede operandtyper), hvis vi tjekker objekt med andre klasser, som det ikke instansierer.
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