Đây là một trong những người thuần túy java tôi nghĩ. Gần đây tôi đã có một vấn đề với một phương pháp để thực hiện phân tích cú pháp các giá trị chuỗi tùy chỉnh thành một Boolean. Một nhiệm vụ đơn giản, nhưng đối với một số lý do phương pháp dưới đây đã ném một NullPointerException trong trường hợp null ...NullPointerException từ Boolean
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
Kiểu trả về cho phương pháp này là Boolean vậy tại sao hoặc làm thế nào có thể một NullPointerException được ném? Từ gỡ lỗi thông qua nó có vẻ là ngoại lệ được ném tại điểm mà câu lệnh điều kiện trong dòng lồng nhau đánh giá null và trả về null cho điều kiện bên trong dòng bên ngoài, nhưng một lần nữa tôi không thể giải thích tại sao.
Cuối cùng tôi đã từ bỏ và viết lại phương pháp này như sau, trong đó hoạt động như mong đợi:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
Các mã sau đây là một nửa chiều giữa hai và cũng làm việc như mong đợi:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}
+1 cho một "puzzler" đẹp – NilsH
@NilsH cảm ơn vì +1 và giải pháp! – Robin