繁体   English   中英

在Java中如何从内部引用匿名内部类?

[英]In Java how can I reference an anonymous inner class from within itself?

我正在定义一个回调,并希望从内部引用回调。 编译器不喜欢这样,并声称引用回调的变量未初始化。 这是代码:

final Runnable callback = new Runnable() {
    public void run() {
        if (someCondition()) {
            doStuffWith(callback); // <<--- compiler says "the local variable callback may not be initialized"
        }
    }
};
// Here callback is defined, and is certainly defined later after I actually do something with callback!

很明显,编译器被误认为是在我们到达内部方法的时候定义了回调。 如何告诉编译器这段代码没问题,或者我怎么能用不同的方式编写它来安抚编译器呢? 我没有做太多Java,所以我可能会在这里咆哮错误的树。 有没有其他惯用的方法来做到这一点? 对我来说,这似乎是一个非常简单的构造。

编辑:当然,这个,太容易了。 感谢所有快速解答!

为什么不使用:

doStuffWith(this);

我可能错了,但我认为你想要替换doStuffWith(callback); doStuffWith(this);

http://download.oracle.com/javase/tutorial/java/javaOO/thiskey.html

您必须使用关键字试过this

您可以使用this而不是callback

(刚刚试了一下,我的编译器不抱怨的方式,但如果你使用this它不:

final Runnable callback = new Runnable() {
    public void run() {
        if (something()) {
            doStuffWith(this);
        }
    }
};

暂无
暂无

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

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