java - 匿名内部类——获取 "this"

标签 java this anonymous-class anonymous-inner-class

我知道如果我有一个匿名内部类并且我需要外部类实例,我只会使用 Outer.this。但是,我在一个匿名类中有一个匿名类,并且我想要后者的实例(外部匿名类)。

示例:

mRestService.getComicLatest(new Callback<Comic>() {

    @Override
    public void success(Comic comic, Response response) {
    }

    @Override
    public void failure(RetrofitError retrofitError) {
        mRetryFrame.findViewById(R.id.retry_button).setOnClickListener(
                new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mRestService.getComicLatest(WHAT_DO_I_PUT_HERE);
            }
        });
    }
});

在上面的示例中,在 WHAT_DO_I_PUT_HERE 中,我想要 Callback 匿名类的实例。

显然,我知道我可以在 Callback 类中创建一个实例变量来保存对“this”的引用并将其用于 WHAT_DO_I_PUT_HERE,但我希望可能有一种更干净的方法,就像我们调用的方式一样Outer.this 用于非匿名类。

最佳答案

您可以在外部匿名类中添加对 this 的引用:

mRestService.getComicLatest(new Callback<Comic>() {

    private final Callback<Comic> outerAnon = this;

    @Override
    public void success(Comic comic, Response response) {
    }

    @Override
    public void failure(RetrofitError retrofitError) {
        mRetryFrame.findViewById(R.id.retry_button).setOnClickListener(
                new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mRestService.getComicLatest(outerAnon);
            }
        });
    }
});

关于java - 匿名内部类——获取 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491332/

相关文章:

java - 使用 'this' 作为构造函数中方法调用的参数

javascript - “this”关键字如何工作?

java - 这两个语句之间的语义区别是什么?

java - 匿名可运行对象可防止 Android 对定义它的 Activity 进行垃圾收集

java - 解决错误 'can not resolve symbol'

java - 从 JDL 文件添加 jHipster 实体时出错

Java/Proguard : Find out why jar does not Validate/Verify?

java - aws.accessKeyId 和 aws.secretKey 未被读取

java - JPanel时钟和按钮合并

java - 匿名内部对象中的 "This"