Ответ 1
Простой способ утилиты:
public static boolean isBetween(int value, int min, int max)
{
return((value > min) && (value < max));
}
Мне было интересно, у вас есть опрятный способ сделать это?
if(orderBean.getFiles().size() > 0 && orderBean.getFiles().size() < 5)
без объявления переменной, которая больше не нужна?
int filesCount = orderBean.getFiles().size();
if(filesCount > 0 && filesCount < 5) {
Я имею в виду, что в цикле for мы "объявляем условия" для фактической итерации, можно объявить переменную, а затем указать условия. Здесь нельзя сделать это, и ничто не может сделать что-то вроде
if(5 > orderBean.getFiles().size() > 0)
Простой способ утилиты:
public static boolean isBetween(int value, int min, int max)
{
return((value > min) && (value < max));
}
В нескольких сторонних библиотеках есть классы, инкапсулирующие концепцию диапазона, такие как Apache commons-lang Range (и подклассы).
Используя такие классы, вы можете выразить свое ограничение, подобное:
if (new IntRange(0, 5).contains(orderBean.getFiles().size())
// (though actually Apache Range is INclusive, so it'd be new Range(1, 4) - meh
с добавленным бонусом, что объект диапазона может быть определен как постоянное значение в другом месте в классе.
Однако, не вытягивая другие библиотеки и используя их классы, сильный синтаксис Java означает, что вы не можете массировать сам язык, чтобы обеспечить эту функцию красиво. И (по моему мнению), вытягивание в стороннюю библиотеку только для этого небольшого количества синтаксического сахара не стоит.
Если getFiles() возвращает java.util.Collection
, ! getFiles(). isEmpty() && & & размер < 5 может быть в порядке.
С другой стороны, если вы не инкапсулируете контейнер, который предоставляет метод, например boolean sizeBetween(int min, int max)
.
Это один уродливый способ сделать это. Я бы просто использовал локальную переменную.
EDIT: Если также размер() > 0.
if (orderBean.getFiles().size() + Integer.MIN_VALUE-1 < Integer.MIN_VALUE + 5-1)
java не является питоном.
вы не можете сделать ничего подобного
if(0 < i < 5) or if(i in range(0,6))
вы упомянули самый простой способ:
int i = getFilesSize();
if(0 < i && i < 5){
//operations
}
о
if(0 < i){
if(i < 5){
//operations
}
}
Если это вас действительно беспокоит, почему бы не написать собственный метод isBetween(orderBean.getFiles().size(),0,5)
?
Другим вариантом является использование isEmpty
, поскольку оно является более четким:
if(!orderBean.getFiles().isEmpty() && orderBean.getFiles().size() < 5)
Пожалуйста, просто напишите статический метод где-нибудь и напишите:
if( isSizeBetween(orderBean.getFiles(), 0, 5) ){
// do your stuff
}
В настоящее время вы можете использовать lodash:
var x = 1;
var y = 5;
var z = 3;
_.inRange(z,x,y);
//results true