utilisation de "Instance of" en java [dupliquer]

dans quel cas l'opérateur "instanceof" est-il utilisé?

J'ai appris que Java a l'opérateur instanceof . Pouvez-vous préciser où il est utilisé et quels sont ses avantages?

261
demandé sur Andrew Tobilko 2011-09-23 13:22:03
la source

4 ответов

Fondamentalement, vous vérifier si un objet est une instance d'une classe spécifique. Vous l'utiliser normalement, lorsque vous avez une référence ou d'un paramètre d'un objet qui est d'une super-classe ou le type d'interface et ont besoin de savoir si l'objet a un autre type (normalement plus concret).

exemple:

public void doSomething(Number param) {
  if( param instanceof Double) {
    System.out.println("param is a Double");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }

  if( param instanceof Comparable) {
    //subclasses of Number like Double etc. implement Comparable
    //other subclasses might not -> you could pass Number instances that don't implement that interface
    System.out.println("param is comparable"); 
  }
}

Notez que si vous devez utiliser l'opérateur, très souvent, il est généralement une indication que votre conception a quelques défauts. Ainsi, dans un système bien conçu application vous devez utiliser cet opérateur le moins possible (bien sûr, il y a des exceptions à cette règle générale).

344
répondu Thomas 2014-03-10 23:02:13
la source

instanceof est utilisée pour vérifier si un objet est une instance d'une classe, une instance d'une sous-classe ou d'une instance d'une classe qui implémente une interface particulière.

pour en savoir plus sur la définition de la langue Oracle, cliquez ici.

63
répondu Jayendra 2014-05-10 03:00:55
la source

instanceof peut être utilisé pour déterminer le réel type d'objet:

class A { }  
class C extends A { } 
class D extends A { } 

public static void testInstance(){
    A c = new C();
    A d = new D();
    Assert.assertTrue(c instanceof A && d instanceof A);
    Assert.assertTrue(c instanceof C && d instanceof D);
    Assert.assertFalse(c instanceof D);
    Assert.assertFalse(d instanceof C);
}
44
répondu Jean Logeart 2018-01-23 16:49:00
la source

instanceof est un mot clé qui peut être utilisé pour tester si un objet est d'un type spécifié.

exemple:

public class MainClass {
    public static void main(String[] a) {

    String s = "Hello";
    int i = 0;
    String g;
    if (s instanceof java.lang.String) {
       // This is going to be printed
       System.out.println("s is a String");
    }
    if (i instanceof Integer) {
       // This is going to be printed as autoboxing will happen (int -> Integer)
       System.out.println("i is an Integer");
    }
    if (g instanceof java.lang.String) {
       // This case is not going to happen because g is not initialized and
       // therefore is null and instanceof returns false for null. 
       System.out.println("g is a String");
    } 
} 

voici ma source .

25
répondu Barth 2018-02-09 17:04:24
la source

Autres questions sur java operators instanceof