作者:Jean_香香 | 来源:互联网 | 2022-12-13 15:34
我有多个条件要检查,如下所示,
if(pouch.getStatus().equals("Finalized") || pouch.getStatus().equals("Ready")
|| pouch.getStatus().equals("Checkout") || pouch.getStatus().equals("Confirmed")
|| pouch.getStatus().equals("Book") || pouch.getStatus().equals("Started")
|| pouch.getStatus().equals("Inital") || pouch.getStatus().equals("Close")) {
// Body
}
是否有任何简单的方法来检查类似SQL IN
条件的上述条件,以便代码看起来更简单?
1> D-Shih..:
我们来看看SQL in
功能
SQL WHERE IN
返回与列表中的值匹配的值
所以我会使用一个集合,它实现from Collection
并包含方法,使if
语句更简单.
contains(Object o)如果此set包含指定的元素,则返回true.
contains
效果与SQL非常相似in
.
1.在集合中添加多个条件,从中实现 Collection
Set dict = new HashSet();
dict.add("Finalized");
dict.add("Ready");
dict.add("Checkout");
dict.add("Confirmed");
dict.add("Book");
dict.add("Started");
dict.add("Inital");
dict.add("Close");
2. contains
检查输入值是否存在于集合中.
if (dict.contains(pouch.getStatus()))
{
// do your logic
}
2> Praveen..:
您可以使用课堂matches
上提供的方法String
,
if(pouch.getStatus().matches("Finalized|Ready|Checkout|Confirmed|Book|Started|Inital|Close")){
//your implementation goes here
}
3> raviraja..:
List listOfInputs = new ArrayList();
// add elements in listOfInputs...
boolean isAvailable = listOfInputs.contains(pouch.getStatus());
4> 小智..:
SQL IN
可能会返回多个结果,但在您的问题中,如果满足一个条件,则操作将终止并返回.
您可以创建一个枚举来保存所有条件,如下所示.
假设您的Pouch类是这样的.
public class Pouch {
private final String status;
public Pouch(final String status) {
this.status = status;
}
public String getStatus() {
return status;
}
}
这是你的包含状态的枚举.
public enum PouchEnum {
Finalized, Ready, Checkout, Confirmed, Book, Started, Inital, Close
}
并检查您的状况,如下所示.
if (PouchEnum.valueOf(pouch.getStatus()) != null) {
// Do some stuff
}
为了使它更干净,你可以使用apache commons-lang3中的EnumUtils,这样可以使代码检查更加清晰,如下所示.
if (EnumUtils.isValidEnum(PouchEnum.class, pouch.getStatus())) {
// Do some stuff
}
我希望这将有助于您的代码更清洁.