[英]Greater than and less than in one statement
我想知道,你有一个巧妙的方法来做到这一点吗?
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's Range is INclusive, so it'd be new Range(1, 4) - meh
额外的好处是范围对象可以定义为类中其他地方的常量值。
但是,如果不引入其他库并使用它们的类,Java 的强大语法意味着您无法通过调整语言本身来很好地提供此功能。 而且(在我自己看来),仅仅为了这少量的语法糖而引入第三方库是不值得的。
如果 getFiles() 返回java.util.Collection
, !getFiles().isEmpty() && size<5就可以了。
另一方面,除非您封装提供诸如boolean sizeBetween(int min, int max)
等方法的容器。
这是一种丑陋的方法。 我只会使用局部变量。
编辑:如果 size() > 0 也是如此。
if (orderBean.getFiles().size() + Integer.MIN_VALUE-1 < Integer.MIN_VALUE + 5-1)
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
}
}
如果这真的困扰您,为什么不编写自己的方法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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.