La meilleure façon de “nier” un instanceof
Je pensais si il existe un meilleur/mieux que d'annuler une instanceof
en Java.
En fait, je suis en train de faire quelque chose comme:
if(!(str instanceof String)) { /* do Something */ }
Mais je pense qu'une "belle" de la syntaxe pour ce faire doit exister.
Personne ne sait si elle existe, et la façon dont la syntaxe ressemble?
EDIT:
Par beau, je pourrais dire quelque chose comme ceci:
if(str !instanceof String) { /* do Something */ } //compilation fails
- Je déteste les règles de priorité pour les
instanceof
tellement... - Vous pouvez toujours créer une variable, quelque chose comme
boolean strIsString = str instanceof String;
... - ouais @Baqueta, est une option. Mais, quelles sont les différences qui pourrait arriver dans l'utilisation de la mémoire dans une syntaxe ou d'une autre?
- Comment est-ce un commentaire constructif?
- La Java des créateurs peuvent introduire un nouveau mot-clé: notinstanceof. Juste mes deux cents ^^
- Votre exemple est mauvais, parce que la Chaîne ne peut pas avoir des sous-classes, de sorte que votre exemple est fondamentalement un isNull vérifier.
Vous devez vous connecter pour publier un commentaire.
Non, il n'y a pas de meilleure façon; le vôtre est canonique.
Je ne sais pas ce que vous imaginez quand vous dites "beau", mais que penser de cela? Personnellement, je pense que c'est pire que la forme classique que vous avez posté, mais quelqu'un comme elle...
!= true
au lieu de== false
😀if(!(str instanceof String))
est la seule bonne façon, et j'ai besoin d'arrêter de penser à des alternativesVous pouvez utiliser le
de la Classe.isInstance
méthode:... mais il est encore niée et assez laid.
this method returns true if the specified Object argument is an instance of the represented class (or of any of its subclasses)
Habituellement, vous ne voulez pas juste un
if
mais unelse
clause.peut être écrite comme
Ou vous pouvez écrire le code de sorte que vous n'avez pas besoin de savoir si ses une Chaîne ou pas. par exemple,
peut être écrite comme
Si vous pouvez utiliser des importations, et de votre code moral permet
Et puis...
C'est juste une interface fluide exercice, je n'avais jamais utiliser dans la vie réelle de code!
D'aller à votre façon classique, il ne faut pas confondre quelqu'un d'autre lecture de votre code!
ok juste mes deux cents, utilisez l'une est la méthode de chaîne:
Si vous trouvez qu'il est plus compréhensible, vous pouvez faire quelque chose comme ceci avec Java 8 :