Tôi đang đợi câu trả lời 'không' cho câu hỏi này.Bạn có thể lưu trữ biến trong mệnh đề if không?
Tôi đã quan tâm nếu bạn có thể lưu biến cùng một lúc khi bạn kiểm tra biến đó trong mệnh đề if.
Giả sử tôi có mã này.
if(foo!=null){
if(foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
} else {
System.out.println("Failure.");
}
Tôi xử lý ngay bây giờ để "lỗi" -states độc lập, ngay cả khi kết quả giống nhau. Tôi có thể lấy chúng lại với nhau như thế này:
if(foo!=null && foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
Đã có nhiều mã khác. nếu foo là null nó sẽ dừng lại ở đó và sẽ không thử foo.getBar (trong if) vì vậy tôi sẽ không nhận được một NPE. Điều cuối cùng tôi muốn nâng cao, và câu hỏi chính: Tôi thực sự đã gọi điện cho foo.getBar() hai lần chưa? Sẽ rất tuyệt khi thoát khỏi cuộc gọi giống hệt thứ hai nếu getBar() sẽ là một hoạt động rất nặng. Vì vậy, tôi tự hỏi nếu có bằng cách nào đó có thể làm điều gì đó tương tự như thế này:
if(foo!=null && (Bar bar = foo.getBar())!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
tôi sẽ phải phá vỡ nó lên đến hai khác nhau nếu là một lần nữa nếu tôi muốn làm
Bar bar = foo.getBar();
if (bar!=null) ...
Nhân tiện, đó là "lỗi". –