File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -219,9 +219,31 @@ if (a instanceof ArrayList) {
219219 // ... // <1>
220220}
221221----
222-
223222<1> l’execution entrera dans le bloc si l’objet pointé par la variable `a` est de type `ArrayList` ou d’un sous-type d’ `ArrayList`
224223
224+ Classiquement, tester le type d'une variable est suivi par un *cast* :
225+
226+ [source,java]
227+ ----
228+ void callBarkIfPossible(Animal animal) {
229+ if (animal instanceof Dog) {
230+ Dog dog = (Dog) animal; // <1>
231+ dog.bark();
232+ }
233+ }
234+ ----
235+ <1> Ce type de *cast* est appelé *downcasting* (passage d'un type parent à un type enfant)
236+
237+ A partir de Java 16 l'opérateur `instanceof` peut prendre une opérande supplémentaire afin d'obtenir directement une variable du type testé :
238+ [source,java]
239+ ----
240+ void callBarkIfPossible(Animal animal) {
241+ if (animal instanceof Dog dog) {
242+ dog.bark();
243+ }
244+ }
245+ ----
246+
225247=== Nommage
226248
227249Le nommage a un intérêt prépondérant dans le paradigme objet où le développeur essaie d’exprimer des concepts réels.
You can’t perform that action at this time.
0 commit comments