繁体   English   中英

匿名的内部阶级—得到“这个”

[英]Anonymous inner class — getting “this”

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

例:

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 anon类的实例。

显然,我知道我可以在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);
            }
        });
    }
});

您应该能够像从Outer开始一样进一步链接它。这也应该起作用:

外,内

编辑:进一步阅读后,我发现我可能误解了您的问题,如果真是这样,对不起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM