如何从Java中的匿名内部类获取对封装类的引用?
我目前在外部类创build一个明确的引用,这样我有一个名字来引用匿名内部类。 有一个更好的方法吗?
我刚刚发现这个。 使用OuterClassName.this
。
class Outer { void foo() { new Thread() { public void run() { Outer.this.bar(); } }.start(); } void bar() { System.out.println("BAR!"); } }
更新如果你只是想要对象本身(而不是调用成员),那么Outer.this
是要走的路。
使用EnclosingClass.this
你仍然可以使用Outer.class来获取外部类对象的类(它将返回与Outer.this.getClass()相同的Class对象,但效率更高)
如果要访问封闭类中的静态属性,可以使用Outer.name,其中name是静态字段或方法。