Tại sao bạn không chỉ đơn giản là thay thế phương pháp của bạn với:
public Optional<Employee> findEmployeeById(String id) {
List<Employee> empList = .. //some db query
return (empList.isEmpty() ? Optional.empty() :
Optional.ofNullable(empList.get(0)));
}
tôi đề nghị bạn quấn empList.get(0)
trong một Optional.ofNullable
trong trường hợp nó vẫn có thể được null.
Theo như lý do tại sao tốt hơn: hãy suy nghĩ về người gọi của phương pháp. Ai đó đang gọi phương pháp của bạn phải suy nghĩ những gì thực sự làm khi kết quả là empty
.
Bên cạnh đó tại buộc bạn vào viết code như:
Optional<Employee> emp = findEmployeeById("12");
if (emp.isPresent()) {
} else {
....
}
Bạn cũng có thể chuỗi này để trở thành thạo hơn như:
emp.orElseThrow(RuntimeException::new)
Hoặc phương pháp bắt buộc khác.
Đó không phải chỉ đơn giản là trường hợp khi bạn trả lại Nhân viên. Bạn thậm chí không nghĩ (thường) để kiểm tra nếu tham chiếu là null.
Điều đó làm cho mã của bạn ít bị lỗi và dễ hiểu hơn.
Tại sao truy vấn của bạn chỉ trả về một kết quả duy nhất ở địa điểm đầu tiên? – Marvin
Đó là một logic phức tạp .... của gia nhập trái và tất cả .... Tôi hiểu bạn điểm nhưng không thể thực sự thay đổi rằng – coder25
'return empList.isEmpty()? Optional.empty(): Optional.of (empList.get (0)); ' – Jesper