【问题标题】:Access "this" from Java anonymous class从 Java 匿名类访问“this”
【发布时间】: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()

这是一种合理的方式吗?或者有没有更好的方法?

【问题讨论】:

    标签: java this anonymous-class


    【解决方案1】:
    Container.this.select();
    

    【讨论】:

    • 我什至不知道 this 关键字可以像方法和属性一样被区分。 +1
    • 需要注意的是,这里必须精确指定Container 类。它的任何祖先都不会被接受。
    • 拯救我的……夜晚,也许吧? +1
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多