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 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); } }
Produksjon:
true false true
JavaNote: instanceof operator kaster kompileringstidsfeil (Inkompatible betingede operandtyper) hvis vi sjekker 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); } }
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