我是java的新手什么是正确的写法if和else阻塞下面的代码请让我知道我实现了什么错误。而且我必须使用所有这些if..else阻止3次不同的条件。我得到了所有的输出,但我想让它更加优化。我认为我们可以使用常量类来使其更加优化
if (roleName.equalsIgnoreCase("Project Manager")) {
if (actionsPerform.equalsIgnoreCase("Approval")) {
reimbursementHistory.setOldStatus(0);
reimbursementHistory.setNewStatus(1);
reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get("businessUnitId"));
reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get("projectManagerId"));
}
else if (actionsPerform.equalsIgnoreCase("Query")) {
reimbursementHistory.setOldStatus(1);
reimbursementHistory.setNewStatus(6);
reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get("projectManagerId"));
reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get("empCode"));
}
}
答案 0 :(得分:0)
根据条件的复杂程度,我会使用简单的Map
将这些参数存储在POJO
中。
private static final class Params{
final int oldStatus;
final int newStatus;
final String AssignTo;
final String AssignNe;
public Params(int oldStatus, int newStatus, String assignTo, String assignNe) {
this.oldStatus = oldStatus;
this.newStatus = newStatus;
this.AssignTo = assignTo;
this.AssignNe = assignNe;
}
}
然后首先创建每个参数
private static Map<String, Params> params = new HashMap<>();
public static void main(String[] args) {
params.put("Approval", new Params(0, 1, "businessUnitId", "projectManagerId"));
params.put("Query", new Params(1, 6, "empCode", "projectManagerId"));
}
然后你只需要定义一个设置值的方法
public boolean setHistory(Params p){
reimbursementHistory.setOldStatus(p.oldStatus);
reimbursementHistory.setNewStatus(p.newStatus);
reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get(p.AssignTo));
reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get(p.AssignNe));
}
使用一些方法参考和Optional
Optional.of(params.get("Query"))
.map(this::setHistory)
.orElseThrow(IllegalArgumentException::new);
使用Optional
可以轻松抛出异常(如果找不到)。