Представьте себе следующую настройку:
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();
}
}
Переменная field
существует три раза, каждый раз в разных областях.Теоретически все три поля должны быть доступны в методе run
Runnable.
Доступ к двум из них ( f1 и f3 ) достаточно прост (с просто field
и MyClass.this.field
соответственно), однако я не смог найти способaccess f2 .
Я, очевидно, осознаю, что это ужасный дизайн и никогда не должен происходить в производственной среде, однако меня заинтриговало, если была возможность доступа f2 кроме изменения его имени.
Я что-то упустил?Или это такой ужасный дизайн, что его вообще нельзя использовать?