313 votes

utiliser de « Instance » en java

<blockquote> <p><a href="http://stackoverflow.com/questions/7313559/what-is-the-instanceof-operator-used-for">À quoi sert l’opérateur « instanceof » ?</a> </p> <p>J’ai appris que Java a la <code></code> opérateur. Pouvez-vous préciser où il est utilisé et quels sont ses avantages ?</p></blockquote>

395voto

Thomas Points 35713

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 de l'application vous devez avoir à utiliser l'opérateur en aussi peu que possible (bien sûr il existe des exceptions à cette règle générale).

73voto

Jayendra Points 27472

``sert à vérifier si un objet est une instance d’une classe, une instance d’une sous-classe ou une instance d’une classe qui implémente une interface particulière.

Lire la suite de la définition du langage Oracle ici.

51voto

Jean Logeart Points 12166

instanceof peut être utilisée pour déterminer la réelle type d'un 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);
}

Encore une conception à l'aide de instanceof est presque toujours considéré comme une mauvaise conception. Dans une bonne conception, si un objet de type réel C est censé être utilisé comme un objet de type A alors vous n'êtes pas censé savoir si cet objet est en fait un objet de type C ou D! Sinon, cela signifie que vous traitez C et D différemment, même si elles ont en commun certaines de paramètres.

Par conséquent, évitez d'utiliser des instanceof possible que vous pouvez utiliser le polymorphisme de la façon dont il devrait être, en utilisant les interfaces appropriées.

29voto

Barth Points 2176

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

Exemple :

Voici ma source.

1voto

Pratik Points 15125

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X