instanceof utiliser pour plusieurs types
Je suis en train d'écrire un TypeChecker pour MiniJava et ExpOp doit vérifier si les deux entrées des expressions de type Entier à utiliser plus, moins, fois.
Comment puis-je écrire une ligne de code à l'intérieur d'un if
déclaration qui comprend à la fois des expressions et vérifie si les deux d'entre eux sont des instances de (instanceof
) Integer
?
C'est ce que j'ai maintenant:
n.e1.accept(this) n.e2.accept(this) instanceof Integer
Remercie de votre aide.
Vous devez vous connecter pour publier un commentaire.
instanceof
est un opérateur binaire: elle ne peut avoir deux opérandes.La meilleure solution pour votre problème est de Java boolean ET exploitant:
&&
.Il peut être utilisé pour évaluer les deux expressions booléennes:
<boolean_exp1> && <boolean_exp2>
.Sera de retour
true
si et seulement si les deux sonttrue
au moment de l'évaluation.Cela étant dit, une autre solution possible est de les jeter à la fois à l'intérieur d'un
try
/catch
bloc, et quand l'un d'eux n'est pas unInteger
unClassCastException
sera levée.Mais ce n'est pas recommandé, car il est reconnu comme un anti-modèle appelé de Programmation Par Exception.
Nous pouvons vous montrer les mille et une façons (création de méthodes, création de classes et d'utilisation du polymorphisme), vous pouvez le faire avec une seule ligne, mais aucun d'entre eux va être mieux ou plus claire que l'utilisation de la
&&
opérateur. Autre chose que cela va vous faire du code plus confuse et moins facile à gérer. Vous ne voulez pas que, vous?instanceof
est un opérateur binaire: il peut seulement deux opérandes.Vous pouvez faire une fonction d'utilité qui utilise la réflexion homologue de
instanceof
,de la Classe.isInstance()
:Vous l'utilisez comme ceci: