【问题标题】:How to refer to enclosing anonymous class instance in Java?如何在 Java 中引用封闭匿名类实例?
【发布时间】:2015-03-01 01:55:14
【问题描述】:

我想知道是否可以(以及如何)在 Java 中引用封闭的 anonymous 类实例。

示例代码:

final Handler handler = new Handler();

handler.post(new Runnable() {
    @Override
    public void run() {
        new Task() {
            @Override
            public void onTaskFinish() {
                handler.post(?); // what should go here?
            }
        }.execute()
    }
});

【问题讨论】:

  • self? [额外字符]
  • 据此:stackoverflow.com/questions/18062961/… 您必须命名/声明一个新类并为其创建一个实例。
  • 我明白了。我很好奇是否有类似 Runnable.this 的东西也适用于匿名类。

标签: java anonymous-class


【解决方案1】:

如果你也是一名 JavaScript 编码员,我敢打赌你不需要问这个 :) 有一种简单的方法可以实现你想要的(并且恰好是一个重要的 JavaScript 习惯用法,因为它围绕 @987654321 的特殊语义@)。

handler.post(new Runnable() {
    @Override
    public void run() {
        final Runnable self = this;
        new Task() {
            @Override
            public void onTaskFinish() {
                handler.post(self);
            }
        }.execute()
    }
});

【讨论】:

  • 这正是我所做的!我只是好奇它是否可以从派生自Task 的匿名类内部实现,但没有外部引用。由于您的代码回答了我的问题,因此我接受您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多