Способ доступа к полю во вложенном методе из анонимного внутреннего класса с неоднозначностью именования - PullRequest
0 голосов
/ 18 мая 2018

Представьте себе следующую настройку:

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 кроме изменения его имени.

Я что-то упустил?Или это такой ужасный дизайн, что его вообще нельзя использовать?

...