2010-08-04 43 views
10

Tôi đang tìm kiếm thông qua mã và tự hỏi điều này có nghĩa là:Cú pháp Java nào là "== null? False: true;"

Boolean foo = request.getParameter("foo") == null? false:true; 

Đó phải là người ngồi một cái gì đó có thể chuyển đổi String trở về từ getParameter() vào một Boolean.

Nhưng tôi chưa bao giờ thấy loại Java này với dấu chấm hỏi và dấu hai chấm (ngoại trừ trong vòng lặp foreach). Bất kỳ hel nào được đánh giá cao!

+1

đôi khi tôi ghét những câu như này mà không có dấu ngoặc thích hợp. nên dễ đọc hơn như thế này: 'Boolean foo = (request.getParameter (" foo ") == null)? false: true; ' – mauris

+2

Lưu ý rằng nếu tham số yêu cầu là foo = false thì biến foo sẽ được đặt thành' true'. –

Trả lời

25

Đó là các nhà điều hành ternary. Đoạn:

Boolean foo = request.getParameter("foo") == null? false:true; 

tương đương với:

Boolean foo; 
if (request.getParameter("foo") == null) 
    foo = false; 
else 
    foo = true; 

hoặc (tối ưu hóa):

Boolean foo = request.getParameter("foo") != null; 

Các hình thức cơ bản của các nhà điều hành nằm dọc theo dòng:

(condition) ? (value if condition true) : (value if condition false) 
16

Đó là các nhà điều hành ternary:

(condition) ? if-true : if-false 

Toàn bộ điều có thể đã được viết như sau:

Boolean foo = request.getParameter("foo") != null; 

nào IMO là mã sạch hơn.

+3

+1 để chỉ ra rằng trong trường hợp này, nó được sử dụng không cần thiết. – Jesper

+0

Tại sao tất cả mọi người chỉnh sửa câu trả lời của họ? – NullUserException

+0

+1 để chỉ ra điều này. Nói chung không phải là tốt nhất để sử dụng toán tử bậc ba để trả về một giá trị boolean. – kiamlaluno

0

Nó là viết tắt cho

Boolean foo; 
if(request.getParameter("foo")==null) 
{ 
foo = false; 
} 
else { foo = true; } 
+0

Và dài tay cho cách hợp lý nhất để viết nó ;-) – EJP

0

Toàn bộ điều có thể chỉ

Boolean foo = (request.getParameter("foo") != null); 
Các vấn đề liên quan