Bonjour,

Tout d'abord, je n'aime pas les casts. : )

Une solution peut-être pas très propre me vient à l'esprit pour des petits trucs isolés.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
class A {
  B asB(){
     throw new IllegalStateException("Bad Type");
  }
  C asC(){
     throw new IllegalStateException("Bad Type");
  }
}
 
class B extends A {
  final B asB(){
    return this;
  }
}
 
class C extends A {
  final C asC(){
    return this;
  }
}
En gros ça remplace le check pour le cast par un appel de méthode. Et surtout il n'y a pas de cast dans mon code.

Est-ce que quelqu'un sait si c'est fort différent au runtime finalement?

Merci : )