Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen dem Schlüsselwort „instanceof“ und der Methode „isInstance()“ in Java?

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

青灯夜游
青灯夜游Original
2019-03-20 14:48:133663Durchsuche

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

Ausgabe:

true

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

Ausgabe:

true
false
true

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

Ausgabe:

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

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!

Stellungnahme:
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