308 votes

commutateur d’instanceof ?

J’ai une question de l’utilisation du boîtier commutateur pour `` objet :

Par exemple : mon problème peut être reproduit en Java :

Comment pourrait il être implémenté à l’aide `` ?

Merci d’avance.

247voto

jmg Points 4146

Il s’agit d’un scénario typique où sous-type permet de polymorphisme. Procédez comme suit

Vous pouvez simplement appeler sur .

Si vous n’êtes pas libre de changer , , et `` , vous pouvez appliquer le modèle visiteur pour atteindre le même.

109voto

Nico Points 615

Si vous ne pouvez pas absolument code à une interface, vous pouvez ensuite utiliser un enum en qualité d’intermédiaire :

39voto

se.solovyev Points 661

Juste au cas où si quelqu'un lira ce :

La meilleure solution en java est :

Les grands avantages de ce modèle sont :

  1. Vous le faites juste comme (aucun commutateur du tout) :
  2. En cas si vous ajoutez un nouveau Action appelée « d » vous MUST imlement doAction(...) méthode

Remarque : Ce modèle est décrit dans l’aventure de Joshua Bloch « Effective Java (2ème édition) »

26voto

Carlo V. Dango Points 3040

Tu peux pas. Le instruction peut uniquement contenir des déclarations qui sont compiler des constantes de temps et qui sont évaluées à un entier (jusqu'à Java 6 et une chaîne en Java 7).

Ce que vous cherchez est appelé « pattern matching » en programmation fonctionnelle.

Voir aussi Comment éviter instanceof en Java

6voto

Andreas Johansson Points 881

Non, il n’y a aucun moyen de le faire. Ce que vous pouvez faire est toutefois de considérer le polymorphisme comme un moyen de gérer ce genre de problèmes.

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