我目前正在外部类中创建一个显式引用,以便在匿名内部类中有一个名称可以引用。有更好的方法吗?
答案 0 :(得分:89)
我刚刚发现了这个。使用OuterClassName.this
。
class Outer {
void foo() {
new Thread() {
public void run() {
Outer.this.bar();
}
}.start();
}
void bar() {
System.out.println("BAR!");
}
}
已更新如果您只想要对象本身(而不是调用成员),则可以使用Outer.this
。
答案 1 :(得分:19)
使用EnclosingClass.this
答案 2 :(得分:1)
您仍然可以使用Outer.class来获取外部类对象的类(它将返回与Outer.this.getClass()相同的Class对象,但效率更高)
如果要访问封闭类中的静态,可以使用Outer.name,其中name是静态字段或方法。