我很想知道,你有一个巧妙的方法吗?
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)
答案 0 :(得分:24)
简单实用方法:
public static boolean isBetween(int value, int min, int max)
{
return((value > min) && (value < max));
}
答案 1 :(得分:10)
多个第三方库都有封装范围概念的类,例如Apache commons-lang&#39; Range(和子类)。
使用这样的类你可以表达你的约束类似于:
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
额外的好处是可以将范围对象定义为类中其他位置的常量值。
然而,如果没有引入其他库并使用他们的类,Java强大的语法意味着您无法按摩语言本身以很好地提供此功能。并且(在我看来),仅仅因为少量的语法糖而吸引第三方库是不值得的。
答案 2 :(得分:3)
如果getFiles()返回java.util.Collection
,!getFiles()。isEmpty()&amp;&amp;大小&lt; 5 可以。
另一方面,除非您封装提供boolean sizeBetween(int min, int max)
。
答案 3 :(得分:2)
这是一种难看的方式。我只想使用局部变量。
编辑:如果size()&gt; 0也是。
if (orderBean.getFiles().size() + Integer.MIN_VALUE-1 < Integer.MIN_VALUE + 5-1)
答案 4 :(得分:2)
java不是python。
你不能做这样的事情
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
}
}
答案 5 :(得分:1)
如果真的困扰你,为什么不编写自己的方法isBetween(orderBean.getFiles().size(),0,5)
?
另一个选择是使用isEmpty
,因为它更清晰:
if(!orderBean.getFiles().isEmpty() && orderBean.getFiles().size() < 5)
答案 6 :(得分:1)
请在某处写一个静态方法并写下:
if( isSizeBetween(orderBean.getFiles(), 0, 5) ){
// do your stuff
}
答案 7 :(得分:0)
现在您可以使用lodash:
var x = 1;
var y = 5;
var z = 3;
_.inRange(z,x,y);
//results true