2009-07-05 128 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()区别于内部类!