Heim > Java > javaLernprogramm > Hauptteil

Was ist der Unterschied zwischen dem Schlüsselwort „instanceof' und der Methode „isInstance()' in Java?

青灯夜游
Freigeben: 2019-03-20 14:48:13
Original
3726 Leute haben es durchsucht

Das Schlüsselwort „instanceof“ und die Methode „isInstance()“ werden beide verwendet, um die Klasse eines Objekts zu überprüfen. Was ist also der Unterschied zwischen ihnen? Der folgende Artikel wird Ihnen helfen, den Unterschied zwischen dem Schlüsselwort „instanceof“ und der Methode „isInstance()“ zu verstehen.

Was ist der Unterschied zwischen dem Schlüsselwort „instanceof' und der Methode „isInstance()' in Java?

Das Schlüsselwort „instanceof“ und die Methode „isInstance()“ sind beide Klassen, die zum Überprüfen von Objekten verwendet werden, und beide geben einen booleschen Wert zurück. Der Hauptunterschied besteht jedoch darin, dass wir die Klasse eines Objekts dynamisch überprüfen möchten. In diesem Fall funktioniert die Methode isInstance() und dies kann nicht durch den Operator „instanceof“ erreicht werden.

Sehen wir uns den Unterschied zwischen dem Schlüsselwort „instanceof“ und der Methode „isInstance()“ anhand von Beispielen an.

Verwenden Sie das Schlüsselwort „instanceof“, um die Klasse des Objekts zu überprüfen.

public class Test 
{ 
    public static void main(String[] args) 
    { 
        Integer i = new Integer(5); 
  
        // 当i是Integer类的实例时,输出true
        System.out.println(i instanceof Integer); 
    } 
}
Nach dem Login kopieren

Ausgabe:

true
Nach dem Login kopieren

Wenn wir nun die Klasse des Objekts zur Laufzeit überprüfen möchten, müssen wir isInstance( ) verwenden. Verfahren.

public class Test 
{ 
    // 此方法告诉我们对象是否是以字符串“c”形式传递名称的类实例。
    public static boolean fun(Object obj, String c) 
                      throws ClassNotFoundException 
    { 
        return Class.forName(c).isInstance(obj); 
    } 
    public static void main(String[] args) 
                      throws ClassNotFoundException 
    { 
        Integer i = new Integer(5); 
  
        // 当i是Integer类的实例时,输出true
        boolean b = fun(i, "java.lang.Integer"); 
  
        // 因为i不是String类的实例,所以输出false
        boolean b1 = fun(i, "java.lang.String"); 
  
        //当integer类扩展number类时,如果我也是number类的实例,则输出true。
        boolean b2 = fun(i, "java.lang.Number"); 
  
        System.out.println(b); 
        System.out.println(b1); 
        System.out.println(b2); 
    } 
}
Nach dem Login kopieren

Ausgabe:

true
false
true
Nach dem Login kopieren

Hinweis: Das Schlüsselwort „instanceof“ löst einen Fehler bei der Kompilierung aus (inkompatibler bedingter Operandentyp), wenn wir das Objekt mit anderen Klassen überprüfen, die nicht instanziiert sind.

public class Test 
{ 
    public static void main(String[] args) 
    { 
        Integer i = new Integer(5); 
  
        //报错,因为类型不兼容:Integer不能转换为String
        System.out.println(i instanceof String); 
    } 
}
Nach dem Login kopieren

Ausgabe:

demo.java:10: error: incompatible types: Integer cannot be converted to String
System.out.println(i instanceof String); 
                   ^
1 error
Nach dem Login kopieren

Empfohlene verwandte Video-Tutorials: „Java-Tutorial

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe es kann für jeden hilfreich sein, der lernt, hilft. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dem Schlüsselwort „instanceof' und der Methode „isInstance()' in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage