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
Trả lời
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à có, 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.
* "Đ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. –
@Stephen Đủ công bằng và một điểm tốt. –
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ị.
- 1. Câu hỏi phạm vi biến cục bộ
- 2. Biến JavaScript Truy cập cục bộ với cùng một tên trong Inner và Outer Phạm vi
- 3. Biến cục bộ trong java
- 4. Phương thức lớp nội bộ cục bộ chỉ có thể truy cập biến cục bộ cuối cùng. Tại sao?
- 5. Biến cục bộ cuối cùng không thể được gán
- 6. Các biến cục bộ Java cuối cùng được lưu ở đâu?
- 7. Biến cuối cùng tĩnh trong Java
- 8. Có thể truy cập các biến cục bộ cuối cùng nhanh hơn các biến lớp trong Java không?
- 9. java debugging - xem một biến phạm vi
- 10. Phạm vi bối cảnh Servlet vs biến toàn cục
- 11. Trong ArrayBlockingQueue, tại sao sao chép trường thành viên cuối cùng vào biến cuối cùng cục bộ?
- 12. Thực tiễn tốt nhất cho phạm vi biến cục bộ trong gọi lại C++
- 13. mảng cuối cùng trong Java
- 14. Javascript phạm vi biến toàn cục vấn đề
- 15. coldfusion CFM Biến phạm vi
- 16. Lambda biến phạm vi
- 17. Chuyển đổi Java: khai báo biến và phạm vi
- 18. Phạm vi biến trong C++
- 19. Phạm vi biến trong trang aspx
- 20. Tại sao tôi có InstantiationException này trong Java khi truy cập các biến cục bộ cuối cùng?
- 21. Sử dụng biến phạm vi ứng dụng trong java
- 22. Lăng kính 4 - phạm vi cục bộ RegionManager
- 23. python biến phạm vi
- 24. biến cuối cùng trong phương pháp trong Java
- 25. Phạm vi biến đổi trong dưa chuột
- 26. Java Phạm vi tĩnh
- 27. khóa phạm vi trong java
- 28. Sử dụng biến cục bộ
- 29. biến không phải lớp cuối cùng bên trong java
- 30. Chủ đề Biến an toàn cục bộ cuối cùng được chuyển cho chủ đề?
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
Tôi nghĩ đây là ý của bạn, và _no_ nó không hoạt động. http://ideone.com/LNg9w –
@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