Meilleur moyen de «nier» une instance de

Je pensais que s’il existait une meilleure / meilleure façon de nier une instance de Java. En fait, je fais quelque chose comme:

if(!(str instanceof Ssortingng)) { /* do Something */ } 

Mais, je pense que cela devrait exister une “belle” syntaxe pour ce faire.

Quelqu’un sait-il si elle existe et à quoi ressemble la syntaxe?


EDIT: Par beau, je pourrais dire quelque chose comme ceci:

 if(str !instanceof Ssortingng) { /* do Something */ } // comstack failure 

Non, il n’y a pas de meilleur moyen; le votre est canonique.

Je ne sais pas ce que vous imaginez quand vous dites “belle”, mais qu’en est-il? Personnellement, je pense que c’est pire que la forme classique que vous avez affichée, mais que quelqu’un pourrait l’aimer …

 if (str instanceof Ssortingng == false) { /* ... */ } 

Vous pouvez utiliser la méthode Class.isInstance :

 if(!Ssortingng.class.isInstance(str)) { /* do Something */ } 

… mais il est toujours nié et assez moche.

Habituellement, vous ne voulez pas simplement une clause if mais aussi une clause else .

 if(!(str instanceof Ssortingng)) { /* do Something */ } else { /* do something else */ } 

peut être écrit comme

 if(str instanceof Ssortingng) { /* do Something else */ } else { /* do something */ } 

Ou vous pouvez écrire le code pour que vous n’ayez pas besoin de savoir s’il s’agit d’une chaîne ou non. par exemple

 if(!(str instanceof Ssortingng)) { str = str.toSsortingng(); } 

peut être écrit comme

 str = str.toSsortingng(); 

Si vous pouvez utiliser des importations statiques et que votre code moral leur permet

 public class ObjectUtils { private final Object obj; private ObjectUtils(Object obj) { this.obj = obj; } public static ObjectUtils thisObj(Object obj){ return new ObjectUtils(obj); } public boolean isNotA(Class< ?> clazz){ return !clazz.isInstance(obj); } } 

Et alors…

 import static notinstanceof.ObjectUtils.*; public class Main { public static void main(Ssortingng[] args) { Ssortingng a = ""; if (thisObj(a).isNotA(Ssortingng.class)) { System.out.println("It is not a Ssortingng"); } if (thisObj(a).isNotA(Integer.class)) { System.out.println("It is not an Integer"); } } } 

C’est juste un exercice d’interface courant, je ne l’utiliserais jamais dans le code de la vie réelle!
Optez pour votre façon classique, cela ne déroute personne d’autre en lisant votre code!

ok juste mes deux cents, utilisez une méthode de chaîne de caractères:

 public static boolean isSsortingng(Object thing) { return thing instanceof Ssortingng; } public void someMethod(Object thing){ if (!isSsortingng(thing)) { return null; } log.debug("my thing is valid"); } 

Quel est le problème avec

 if (!(x instanceof y)) { }