Maison  >  Article  >  Java  >  Quelle est la différence entre le mot-clé instanceof et la méthode isInstance() en Java ?

Quelle est la différence entre le mot-clé instanceof et la méthode isInstance() en Java ?

青灯夜游
青灯夜游original
2019-03-20 14:48:133664parcourir

Le mot-clé instanceof et la méthode isInstance() sont tous deux utilisés pour vérifier la classe d'un objet, alors quelle est la différence entre eux ? L'article suivant vous aidera à comprendre la différence entre le mot-clé instanceof et la méthode isInstance(). J'espère qu'il vous sera utile.

Quelle est la différence entre le mot-clé instanceof et la méthode isInstance() en Java ?

Le mot-clé instanceof et la méthode isInstance() sont tous deux des classes utilisées pour vérifier les objets et renvoient tous deux une valeur booléenne. Mais la principale différence vient lorsque l’on souhaite vérifier dynamiquement la classe d’un objet. Dans ce cas, la méthode isInstance() fonctionnera et cela ne peut pas être réalisé via l’opérateur instanceof.

Jetons un coup d'œil à la différence entre le mot-clé instanceof et la méthode isInstance() à travers des exemples.

Utilisez le mot-clé instanceof pour vérifier la classe de l'objet

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

Sortie :

true

Maintenant, si nous voulons vérifier la classe de l'objet au moment de l'exécution, alors nous La méthode isInstance() doit être utilisée.

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

Sortie :

true
false
true

Remarque : Si nous vérifions un objet en utilisant une autre classe qui n'est pas instanciée, le mot-clé instanceof générera une erreur de compilation (type de numéro d'opération conditionnelle incompatible).

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

Sortie :

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

Recommandation de didacticiel vidéo connexe : "Tutoriel Java"

Ce qui précède représente l'intégralité du contenu de cet article , j'espère que cela sera utile à l'étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn