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设计师想鼓励我们使用更好的设计;)