我们如何从Java中的匿名内部类获取对封闭类的引用?
时间:2020-03-05 18:44:06 来源:igfitidea点击:
我目前正在外部类中创建对此的显式引用,以便在匿名内部类中具有要引用的名称。有一个更好的方法吗?
解决方案
回答
使用EnclosingClass.this
回答
我最近才发现的。使用OuterClassName.this
。
class Outer { void foo() { new Thread() { public void run() { Outer.this.bar(); } }.start(); } void bar() { System.out.println("BAR!"); } }
已更新如果只需要对象本身(而不是调用成员),则可以使用Outer.this
。
回答
我们仍然可以使用Outer.class来获取外部类对象的类(它将返回与Outer.this.getClass()相同的Class对象,但是效率更高)
如果要访问封闭类中的静态变量,则可以使用Outer.name,其中name是静态字段或者方法。