J'ai le scénario suivant:Comment puis-je faire baissés en toute sécurité et éviter un ClassCastException
public class A {
}
public class B extends A {
}
public class C extends B {
public void Foo();
}
J'ai une méthode qui peut renvoyer la classe A, B ou C et je veux lancer en sécurité vers C, mais seulement si le type de classe est C. C'est parce que j'ai besoin d'appeler Foo() mais je ne veux pas l'exception ClassCastException.
Avant d'aller à plein régime en utilisant 'instanceof', jetez un oeil à des postes comme celui-ci, comme en utilisant' instanceof' est souvent un signe de un défaut de conception: http://stackoverflow.com/questions/2750714/is-instanceof-considered-bad-practice-if-so-under-what-circumstances-is-instanc et http://stackoverflow.com/questions/ 2790144/avoid-instanceof-in-java – Abel
Envisagez d'utiliser et d'interface, de cette façon vous vous débarrasserez de toutes les nuances et restrictions qui vous sont imposées par le modèle d'héritage unique de Java. interface publique IFoo {public void foo();} –