【问题标题】:how to tell if the element.get() in a list in java is null or not?如何判断 java 列表中的 element.get() 是否为空?
【发布时间】:2020-05-18 20:29:06
【问题描述】:
我正在尝试编写代码来检查 arraylist 中 element.get() 的 if 条件是否为空
如何在不引发错误的情况下访问它
这是我的代码
if(EmployeeSalaryPaymentlist.get(j)!=null) {
EmployeeSalaryPaymentlist.get(j).getFromEmployeeBean().setFirst(fromEmployeeSalaryPaymentList.get(j).getFromEmployeeBean().getFirst());
EmployeeSalaryPaymentlist.get(j).getFromEmployeeBean().setLast(fromEmployeeSalaryPaymentList.get(j).getFromEmployeeBean().getLast());
EmployeeSalaryPaymentlist.get(j).getFromEmployeeBean().setEmployeeId(fromEmployeeSalaryPaymentList.get(j).getFromEmployeeBean().getEmployeeId());
}
【问题讨论】:
标签:
java
spring
list
arraylist
collections
【解决方案1】:
我会像这样重写代码,通过对两个对象添加检查,使其更清晰、更安全。
final Employee employee = EmployeeSalaryPaymentlist.get(j);
final Employee employeeFrom = fromEmployeeSalaryPaymentlist.get(j);
if(employee != null && employeeFrom != null) {
final EmployeeBean to = employee.getFromEmployeeBean();
final EmployeeBean from = employeeFrom.getFromEmployeeBean()
to.setFirst(from.getFirst());
to.setLast(from.getLast());
to.setEmployeeId(from.getEmployeeId());
}
当然,如果 employee.getFromEmployeeBean 也可能返回 null,您还需要一个类似的 if。
【解决方案2】:
执行此检查的一种更好的方法(从 Java 8 开始)是使用 Optional
Optional<Employee> optEmployee = Optional.ofNullable(employeeSalaryPaymentlist.get(j));
if( optEmployee.isPresent() )
{
Employee fromEmployee = optEmployee.get();
//rest of the code
}