Java 从命名不明确的匿名内部类访问封闭方法中字段的方法

Java 从命名不明确的匿名内部类访问封闭方法中字段的方法,java,anonymous-inner-class,Java,Anonymous Inner Class,设想以下设置: public class MyClass { final int field = 1; // f1 public static void main(String[] args) { final int field = 2; // f2 new Thread(new Runnable() { final int field = 3; // f3 @Overr

设想以下设置:

public class MyClass
{
    final int field = 1; // f1

    public static void main(String[] args)
    {
        final int field = 2; // f2

        new Thread(new Runnable()
        {
            final int field = 3; // f3

            @Override
            public void run()
            {
            }
        }).start();
    }

}
变量
字段
存在三次,每次在不同的范围内。理论上,所有三个字段都应该可以在Runnable的
run
方法中访问

访问其中两个字段(f1和f3)非常简单(分别使用
字段
MyClass.this.field
),但是我找不到访问f2的方法

我清楚地意识到,这是一个糟糕的设计,不应该在生产环境中发生,但是,如果有可能访问f2而不是更改其名称,我对此很感兴趣


我会错过一些简单的东西吗?或者这是一个非常糟糕的设计,根本无法使用?

这个问题经常被问到。不,你不能访问f2.@t.J.Crowder,是吗?我在那里找不到,但我自己就是这么想的。那么,我猜这个问题的生命周期很短。这取决于我们中是否有人能找到DupiTaGet.:-)我会一直自己找:)一个棘手的问题。我认为这是不可能的。我猜Java设计师想鼓励我们使用更好的设计;)