Je me demandais, avez-vous une bonne façon de faire cela?
if(orderBean.getFiles().size() > 0 && orderBean.getFiles().size() < 5)
sans déclarer une variable qui n'est pas nécessaire ailleurs?
int filesCount = orderBean.getFiles().size();
if(filesCount > 0 && filesCount < 5) {
Je veux dire, dans la boucle nous "déclarons des conditions" pour l'itération réelle, on peut déclarer une variable et ensuite spécifier les conditions. Ici, on ne peut pas le faire, et on ne peut rien faire comme
if(5 > orderBean.getFiles().size() > 0)
Méthode d'utilité simple:
public static boolean isBetween(int value, int min, int max)
{
return((value > min) && (value < max));
}
Plusieurs bibliothèques tierces ont des classes encapsulant le concept de range, telles que Apache commons-lang's Range (et ses sous-classes).
En utilisant des classes telles que celle-ci, vous pourriez exprimer votre contrainte de la manière suivante:
if (new IntRange(0, 5).contains(orderBean.getFiles().size())
// (though actually Apache's Range is INclusive, so it'd be new Range(1, 4) - meh
avec le bonus supplémentaire que l'objet range peut être défini comme une valeur constante ailleurs dans la classe.
Cependant, sans extraire d'autres bibliothèques et utiliser leurs classes, la syntaxe forte de Java signifie que vous ne pouvez pas manipuler le langage lui-même pour fournir cette fonctionnalité correctement. Et (à mon avis), accéder à une bibliothèque tierce uniquement pour cette petite quantité de sucre syntaxique n'en vaut pas la peine.
Si getFiles () retourne un Java.util.Collection
,! GetFiles (). IsEmpty () && size <5 peut être OK.
D'autre part, à moins que vous n'encapsuliez le conteneur qui fournit une méthode telle que boolean sizeBetween(int min, int max)
.
C'est une façon laide de faire cela. Je voudrais juste utiliser une variable locale.
EDIT: Si taille ()> 0 également.
if (orderBean.getFiles().size() + Integer.MIN_VALUE-1 < Integer.MIN_VALUE + 5-1)
Java n'est pas Python.
tu ne peux rien faire de pareil
if(0 < i < 5) or if(i in range(0,6))
vous avez mentionné le moyen le plus simple:
int i = getFilesSize();
if(0 < i && i < 5){
//operations
}
de
if(0 < i){
if(i < 5){
//operations
}
}
Si cela vous dérange vraiment, pourquoi ne pas écrire votre propre méthode isBetween(orderBean.getFiles().size(),0,5)
?
Une autre option consiste à utiliser isEmpty
car c'est un peu plus clair:
if(!orderBean.getFiles().isEmpty() && orderBean.getFiles().size() < 5)
S'il vous plaît écrivez simplement une méthode statique quelque part et écrivez:
if( isSizeBetween(orderBean.getFiles(), 0, 5) ){
// do your stuff
}
De nos jours, vous pouvez utiliser lodash :
var x = 1;
var y = 5;
var z = 3;
_.inRange(z,x,y);
//results true