Lấy ví dụ sau đây:Các biến cục bộ Java cuối cùng được lưu ở đâu?
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
Thứ nhất, nơi được env
lưu trữ? Là nó:
- sao chép bởi trình biên dịch thành một biến thành viên ẩn của lớp bên trong tham chiếu đến nó
- sao chép vào, và được giới thiệu trên, đống
- trái trên stack và bằng cách nào đó tham chiếu có
- cái gì khác
My đoán là tùy chọn đầu tiên. Thứ hai, thực hiện bất kỳ vấn đề hiệu suất nào phát sinh từ việc này (thay vì chỉ đơn giản là tạo ra env
làm biến thành viên của lớp và tham chiếu nó), đặc biệt nếu bạn đang tạo số lượng lớn các cấu trúc lớp bên trong. biến.
Vì vậy, tôi có thể giả định không có vấn đề về hiệu suất phát sinh từ việc này không? – Joel
Peeve vật nuôi cá nhân của tôi trong lĩnh vực này là các tài liệu tham khảo cho trường hợp bên ngoài (được sử dụng để truy cập các lĩnh vực, không biến, được sao chép) có thể là một vấn đề, nếu họ không cần thiết: http://stackoverflow.com/questions/ 758570/is-it-possible-to-make-anonymous-bên trong-lớp-trong-java-static – Thilo
so với tham chiếu nó như là một biến thành viên. Nếu nó được sao chép, sau đó, giả định của tôi là không có tác động hiệu quả. – Joel