Trước sự ngạc nhiên của tôi mã này hoạt động tốt:Khi nào các tham chiếu được khai báo trong câu lệnh chuyển đổi?
int i = 2;
switch(i) {
case 1:
String myString = "foo";
break;
case 2:
myString = "poo";
System.out.println(myString);
}
Nhưng tài liệu tham khảo Chuỗi không bao giờ được công bố? Nó có thể là tất cả các biến trong mọi trường hợp luôn luôn được khai báo không có vấn đề gì, hoặc làm thế nào là điều này giải quyết?
Không phải tất cả các khai báo được thực hiện ở đầu khối {...} chứa chúng? –
Tôi nghĩ Jules là đúng. Java có các phạm vi tĩnh nên luồng điều khiển không ảnh hưởng đến việc tạo (thay vì khởi tạo) của biến. Vị trí trên ngăn xếp được phân bổ khi nhập khối chuyển đổi. Nhưng nó vẫn là loại curios. GCC từ chối biên dịch mã C tương đương cho (tôi nghĩ) cùng một lý do Java từ chối biên dịch 'if (someBool) String s =" foo ";' – musiKk