Điều này là do một toán tử bậc ba trong java có dạng expression ? expression : expression
và bạn đang đưa ra một tuyên bố là phần cuối cùng. Điều này không có ý nghĩa như một tuyên bố không đưa ra một giá trị, trong khi biểu thức làm. Java có nghĩa là làm gì khi tìm thấy điều kiện sai và cố gắng đưa ra giá trị thứ hai? Không có giá trị.
Toán tử bậc ba được thiết kế để cho phép bạn nhanh chóng lựa chọn giữa hai biến mà không sử dụng câu lệnh if
đầy đủ - đó không phải là những gì bạn đang cố gắng làm, do đó, không sử dụng nó, giải pháp tốt nhất đơn giản là :
public static AppConfig getInstance() {
if (mConfig != null) {
return mConfig;
} else {
throw new RuntimeException("error");
}
}
Nhà điều hành ternary không được thiết kế để tạo ra các tác dụng phụ - trong khi nó có thể được thực hiện để tạo ra chúng, người đọc nó sẽ không hy vọng rằng, vì vậy nó là tốt hơn để sử dụng một if
tuyên bố thực để làm cho nó rõ ràng.
Nguồn
2012-12-15 11:42:50
vì 'throw' không phải là một biểu hiện –
"trở lại (ném RuntimeException mới (" lỗi ")) ; " - bạn không thể trả lại một ngoại lệ ném mới() –
Mẫu đối tượng Null đáng nhắc đến ở đây. –