Tôi cần phải thay đổi các biến bên trong một lớp bên trong và tôi nhận được sự khét tiếng "Không thể tham chiếu đến biến không phải cuối cùng bên trong một lớp bên trong được định nghĩa trong một phương thức khác".biến không phải lớp cuối cùng bên trong java
void onStart(){
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int q = i;
}
});
}
tôi nhanh chóng tạo ra một lớp học mà tổ chức tất cả những điều tôi muốn thay đổi và tạo ra một phiên bản cuối cùng của lớp bên ngoài lớp bên
class temp{
int q;
}
void onStart(){
final temp x = new temp();
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
x.q = i;
}
});
}
này có vẻ là những gì tôi cần và nó làm việc nhưng tôi tự hỏi nếu đây là cách làm việc chính xác xung quanh vấn đề. Ngoài ra, tôi thực sự ghét sử dụng từ temp
để đặt tên cho lớp học của tôi. Có một thuật ngữ lập trình thực sự cho những gì tôi đã làm để tôi tạo một tên mô tả hơn cho lớp học của tôi không?
Bravo. Điều tốt đẹp khác là lớp bên trong này có thể mở rộng và tái sử dụng được. IMO, các lớp bên trong vô danh hầu như luôn luôn là một ý tưởng tồi. – user949300
Chúng hoạt động tốt như một lớp kiểu hành động tắt, trình xử lý cho các sự kiện cụ thể trong đó các hành động có thể được thực hiện dựa trên các yếu tố đầu vào. Rất phổ biến trong lập trình GUI, đó là ví dụ của anh ấy. Ngoại trừ trong trường hợp này có sự tương tác giữa các lớp làm phức tạp vấn đề. – Robin
Đây là những gì tôi đang tìm kiếm! Cảm ơn! –