从 Java 匿名类访问“this”
Posted
技术标签:
【中文标题】从 Java 匿名类访问“this”【英文标题】:Access "this" from Java anonymous class 【发布时间】:2010-11-08 05:16:19 【问题描述】:给定以下代码:
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()
方法。
我的建议是:
在Container中引入一个字段,例如
private Container self = this;
现在我可以通过在匿名类中调用self.select()
来访问Container.select()
。
这是一种合理的方式吗?或者有没有更好的方法?
【问题讨论】:
【参考方案1】:Container.this.select();
【讨论】:
我什至不知道this
关键字可以像方法和属性一样被区分。 +1
需要注意的是,这里必须精确指定Container
类。它的任何祖先都不会被接受。
拯救我的……夜晚,也许吧? +1【参考方案2】:
你可以写Container.this.select()
来区别于内部类!
【讨论】:
以上是关于从 Java 匿名类访问“this”的主要内容,如果未能解决你的问题,请参考以下文章
为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
Java笔记(面向对象,类,this关键字,封装(private),匿名对象,成员变量和局部变量)