Le débordement de pile peut toujours définir [(a == 1 && a == 2 && a == 3) sur true](https://stackoverflow.com/questions/48270127/can-a-1-a-2- L'article a-3-ever-evaluer-to-true) est populaire. L'histoire originale est un problème javascript, mais j'ai vu un article faisant le même problème dans Peri, donc je posterai un article pour être sur la tendance.
Actuellement, j'utilise principalement Java dans mon entreprise, j'ai donc réfléchi à la façon de le faire avec Java. Je me demandais si c'était quelque part dans Qiita, alors j'ai attrapé beaucoup de choses, mais [(a == 1 && a == 2 && a == 3) est toujours vrai. Résumé de l'article de Qiita qui a résolu le problème de Stack Overflow]( Pour autant que je puisse voir https://qiita.com/aimof/items/bb786c112f7dcc3be6c9), cela ne semble pas l'être. Alors si vous le trouvez, pourquoi ne pas faire le premier tour? C'est le résultat de l'écrasement de la balle par essais et erreurs.
Il semble y avoir diverses solutions. À titre d'exemple, cela ressemble à ceci.
==
Référence: ((a == 1 && a == 2 && a == 3) peut toujours être vrai?)
J'ai beaucoup essayé pour le moment. Java a des restrictions de codage strictes, n'autorise pas l'omission du style d'écriture qui peut être fait dans d'autres langues et n'implémente souvent pas de fonctions dans d'autres langues, donc fondamentalement cela ne fonctionne pas. ..
==
Java n'implémente pas de fonctionnalités avancées telles que la surcharge d'opérateurs. C'est en C ++ et Perl.
Main.java
public class Main {
static int i = 1;
public static void main(String[] args) {
System.out.println(a() == 1 && a() == 2 && a() == 3);
//true est affiché
}
static int a() {
return i++;
}
}
J'aurais pu le faire si Java avait une fonction comme "Les fonctions sans arguments peuvent omettre ()". Je pense que c'est probablement le plus regrettable.
En premier lieu, je me fâche quand je ne peux pas comparer un objet avec un type primitif.
Object a = 1;
System.out.println(a == 1 && a == 2 && a == 3); //Erreur de compilation
L'appel d'un champ ou d'une méthode dans un objet ne fonctionne pas car vous devez écrire quelque chose comme ʻa.numberou ʻa.getint ()
à la fin.
Il existe des classes pratiques qui peuvent convertir le type d'un objet tel quel. Ceci est une classe wrapper.
Integer a = 1;
System.out.println(a == 1); //En interne un.intValue() ==Devenir 1
Ensuite, créez une classe qui hérite de ceci et jouez avec ʻintValue () `! Quand j'ai pensé, je ne pouvais pas en hériter avec la classe finale. C'est vrai.
N'est-il pas possible d'utiliser une règle telle que "Lors de l'utilisation de l'interface de fonction, () peut être omis lorsqu'il n'y a pas d'argument"?
En Java, il est impossible de toujours définir (a == 1 && a == 2 && a == 3) sur true. Si vous connaissez la solution, faites-le moi savoir. .. ..
Je l'ai trouvé si je l'ai recherché correctement. Je suis désolé pour tous mes ancêtres. Je veux afficher true même en Java avec un == 1 && a == 2 && a == 3 Je veux afficher true même en Java avec a == 1 && a == 2 && a == 3 (Black Magic) Sortie true avec if (a == 1 && a == 2 && a == 3) en Java (identificateur invisible) Je veux afficher true même en Java avec a == 1 && a == 2 && a == 3 (édition PowerMockito) Je veux afficher true même en Java avec a == 1 && a == 2 && a == 3 (édition noire)
Si vous utilisez PowerMockito, vous pouvez hériter de force Integer.
Recommended Posts