Tôi có một lớp mở rộng JPanel. Trong constructor của nó, tôi đang đi qua this
đến các phương thức khác, chủ yếu để thêm đối tượng jpanel như một trình lắng nghe vào các thùng chứa/các điều khiển bên trong jpanel (nhưng các đối tượng khác). Kể từ khi Netbeans cho thấy một cảnh báo leaking this in constructor
cho những cuộc gọi tôi đã đặt chúng trong một phương pháp khác được gọi là từ các nhà xây dựng.Rò rỉ điều này trong hàm tạo - nơi thêm đúng người nghe và các phương thức khác yêu cầu "này"
trước:
class Foo ... {
public Foo() {
initComponents();
tabX.addChangeListener(this); // <- netbeans complains here
}
sau:
class Foo ... {
public Foo() {
initComponents();
initListeners();
}
protected void initListeners() {
tabX.addChangeListener(this);
}
Đó được thoát khỏi những triệu chứng. Nhưng tôi nghi ngờ nó sửa chữa lý do tại sao netbeans cho thấy cảnh báo.
Đâu là nơi thích hợp để thực hiện loại khởi tạo này trong lớp học có nguồn gốc từ JPanel?
không chắc chắn tôi theo dõi, bạn có thể đăng chữ ký phương thức và "sửa" – Woot4Moo
điều này có thể giúp bạn http://stackoverflow.com/questions/3921616/java-leaking-this-in-constructor – Chikei
[Java - Rò rỉ điều này trong constructor] (http://stackoverflow.com/q/3921616/1048330) – tenorsax