thể trùng lặp:
Why inner classes require “final” outer instance variables [Java]?
Why are only final variables accessible in anonymous class?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?
class Outer{
private String x = "instance variable";
void doStuff(){
String z = "local variable";
class Inner{
public void seeOuter(){
System.out.println("Outer x is : "+ x);
System.out.println("Local variable z is : " + z); //won't compile
}
}
}
}
Đánh dấu z biến cục bộ như sửa lỗi chính thức vấn đề:
final String z = "local variable"; //Now inner object can use it.
Có ai vui lòng giải thích điều gì đang xảy ra không?
Tôi biết chính xác lý do tại sao nó không thể biên dịch trong trường hợp tôi đang cố truy cập biến cục bộ không phải cuối cùng.
Việc tạo kết quả biến cục bộ cho phép nó vẫn hoạt động ngay cả khi phương thức được hoàn thành và biến cục bộ nằm ngoài phạm vi?
Biến cục bộ cuối cùng có được lưu trữ trên một đống thay vì ngăn xếp không?
: nhưng câu hỏi ở đây là lý do tại sao đánh dấu một biến phương pháp cục bộ cuối cùng làm cho nó có thể truy cập? – Anu11
@ Anu11 Tôi sẽ đọc đoạn cuối cùng một lần nữa. ;) –