匿名内部类具有类型,但没有名称。
您可以访问未由命名超类型定义的字段。但是,一旦分配给命名类型变量,该接口就会丢失。
显然,您可以从内部类本身内部访问字段。添加代码的一种方法是通过实例初始化程序:
final AtomicInteger y = new AtomicInteger();new Runnable() { int x; { x = 5; doRun(this); y.set(x); } public void run() { ... blah ... }};匿名内部类表达式返回的值具有匿名类型,因此您有机会在类本身之外使用它:
final int y = new Runnable() { int x; { x = 5; doRun(this); } public void run() { ... blah ... }}.x;您也可以通过声明类似于以下内容的方法传递它:
<T extends Runnable> T doRun(T runnable);



