2012-05-20 29 views
6

Phương thức-Lớp bên trong cục bộ không thể truy cập các biến cục bộ vì thể hiện của lớp bên trong phương thức cục bộ có thể vẫn còn sống sau khi phương thức kết thúc. Nhưng các biến cục bộ sẽ biến mất khi phương thức cục bộ kết thúc. Tôi đã học được rằng lớp bên trong phương thức cục bộ có thể truy cập biến cục bộ cuối cùng, điều này có nghĩa là biến cục bộ cuối cùng vẫn còn sống sau khi phương thức kết thúc?Phạm vi biến cục bộ cuối cùng trong java

+3

Chăm sóc để đăng ví dụ của bạn để không ai có thể hiểu sai câu hỏi của bạn? Chúng tôi là những người lập trình và mã Java sẽ cung cấp cho bạn sự rõ ràng hơn rất nhiều. – jmort253

+0

Tôi nghĩ đây là ý của bạn, và _no_ nó không hoạt động. http://ideone.com/LNg9w –

+0

@HunterMcMillen Câu hỏi đặt ra là về các lớp phương thức cục bộ chứ không phải các phương thức khác. – Jeffrey

Trả lời

7

Sắp xếp. Các lớp bên trong vô danh của Java hoạt động như "đóng cửa", nghĩa là chúng "đóng" xung quanh trạng thái cục bộ hiện tại. Tuy nhiên, Java chỉ cho phép các lớp này đóng xung quanh các biến cuối cùng. Nếu không, trạng thái cục bộ của biến có thể thay đổi, nhưng phiên bản được giữ trong lớp bên trong sẽ không, vì vậy nó sẽ truy cập một phiên bản "lỗi thời". Điều này có thể gây nhầm lẫn cho một lập trình viên.

Thay vào đó, Java yêu cầu khả năng thay đổi đó được xử lý bởi cá thể thông qua các phương thức chứ không phải gán lại biến. Điều này dẫn đến sự rõ ràng hơn và cho phép gỡ lỗi đơn giản hơn. Để biết thêm thông tin về lý do tại sao Java thực hiện việc này, hãy xem this answer.

Vì lớp vẫn giữ tham chiếu đến biến, câu trả lời cho câu hỏi của bạn là , trường hợp đó sẽ không được thu gom rác cho đến khi lớp bên trong từ bỏ quyền sở hữu biến.

+1

* "Điều này có thể gây nhầm lẫn cho một lập trình viên." * - Thêm vào vấn đề, nó sẽ không "giống như" một đóng cửa nữa. Bạn sẽ có một tên định danh có một ràng buộc quan sát khác nhau, tùy thuộc vào ngữ cảnh từ vựng. –

+0

@Stephen Đủ công bằng và một điểm tốt. –

1

Không, không. Nó có nghĩa là một bản sao của biến cục bộ vẫn còn sống, trong thể hiện lớp bên trong. 'Cuối cùng' chỉ đảm bảo hai bản sao không phân biệt nhầm lẫn về giá trị.

Các vấn đề liên quan