2009-07-05 28 views
120

Với đoạn mã sau:Tiếp cận "này" từ Java nặc danh lớp

public interface Selectable { 
    public void select(); 
} 

public class Container implements Selectable { 
    public void select() { 
    ... 
    } 
    public void createAnonymousClass() { 
    Selectable s = new Selectable() { 
     public void select() { 
     //see comment below. 
     } 
    }; 
    } 
} 

tôi muốn truy cập Container.select() từ bên trong lớp ẩn danh của tôi select() phương pháp. Tuy nhiên, this.select() một lần nữa sẽ gọi phương thức 'select() lớp ẩn danh'.

Đề xuất của tôi sẽ là:

Giới thiệu trường vào Vùng chứa, ví dụ:

Bây giờ tôi có thể truy cập Container.select() bằng cách gọi self.select() từ trong lớp ẩn danh.

Đây có phải là cách hợp lý không? Hay có cách nào tốt hơn?

Trả lời

236
Container.this.select(); 
+9

Bây giờ, đó là điều hoàn toàn mới đối với tôi. –

+1

Tôi không biết ngay cả từ khóa 'this' này có thể được phân biệt giống như các phương thức và thuộc tính có thể. +1 –

+0

Cần lưu ý rằng bạn phải chỉ định lớp 'Container' chính xác tại đây. Bất kỳ tổ tiên của nó sẽ không được chấp nhận. – velis

39

Bạn có thể viết Container.this.select() để phân biệt với lớp bên trong!

Các vấn đề liên quan