2009-07-05 87 views
120

考慮下面的代碼:訪問「這個」從Java匿名類

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. 
     } 
    }; 
    } 
} 

我想從我的匿名類的方法select()中訪問Container.select()。但是,this.select()將再次調用匿名類「select()」方法。

我的建議是:

介紹一個字段到容器,例如現在

private Container self = this; 

我可以通過匿名類中調用self.select()訪問Container.select()

這是一個合理的方式嗎?或者有更好的方法嗎?

回答

236
Container.this.select(); 
+9

現在對我來說這是全新的東西。 – 2015-04-21 12:11:38

39

你可以寫Container.this.select()區別於內部類!