从Java匿名类访问“this”

给出以下代码:

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()方法。

我的build议是:

在Container中引入一个字段,例如

 private Container self = this; 

现在我可以通过在匿名类中调用self.select()来访问Container.select()

这是一个合理的方式? 还是有更好的办法?

 Container.this.select(); 

您可以编写Container.this.select()以区别于内部类!