如何从Java中的匿名内部类中获取对封闭类的引用?

时间:2008-08-27 20:36:15

标签: java oop

我目前正在外部类中创建一个显式引用,以便在匿名内部类中有一个名称可以引用。有更好的方法吗?

3 个答案:

答案 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是静态字段或方法。