访问“此” 来自 Java 匿名类

发布于 2024-07-26 18:34:30 字数 706 浏览 9 评论 0原文

给出以下代码:

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()

这是一个合理的方式吗? 或者还有什么更好的方法吗?

Given the following code:

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

I want to access Container.select() from within my anonymous class' select() method. However, this.select() would again call the anonymous class' select() method.

My suggestion would be:

Introduce a field into Container, e.g.

private Container self = this;

Now I can access Container.select() by calling self.select() from within the anonymous class.

Is this a reasonable way? Or are there any better ways?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扶醉桌前 2024-08-02 18:34:30
Container.this.select();
Container.this.select();
落日海湾 2024-08-02 18:34:30

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

You can write Container.this.select() to distinct from the inner class !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文