Tôi luôn luôn nghĩ rằng loại nguyên thủy trong Java không thể null
, vì nó là một lỗi thời gian biên dịch nếu tôi cố gắng làm một cái gì đó như thế này:tại sao tôi có thể thiết lập các kiểu dữ liệu để null trong hoạt động ternary
int test = null;
Tuy nhiên trong một hoạt động ternary, có vẻ như được phép:
int test = something != 0 ? 5 : null;
không phải là một hoạt động ternary chỉ viết tắt (trong trường hợp này):
int test;
if (something != 0){
test = 5;
} else {
test = null
}
không được phép. nếu điều kiện đó không thành công, nó sẽ tự động ném một NullPointerException
do autoboxing. Vậy tại sao trình biên dịch java không lấy được những điều vô nghĩa như thế này?
Nhân tiện, bạn đang nói về các loại * nguyên thủy *. Các loại thô là một thứ hoàn toàn khác. http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html – Natix
bạn đúng! Tôi chỉ nhầm lẫn chúng, và thay đổi nó cho phù hợp –
có thể trùng lặp của [Toán tử ternary trong Java - autoboxing] (http://stackoverflow.com/questions/8098953/tricky-ternary-operator-in-java-autoboxing) –