2013-10-03 3 views
3

У меня есть статическая функция, которая принимает параметр X.Доступ к теневой переменной из анонимного класса

В этой статической функции я создаю анонимный класс. Этот класс должен иметь переменную-член, также называемую X.

Из функций в анонимном классе, как я могу получить доступ к параметру функции X?

Для иллюстрации:

class Test { 

    static void func(final List<T> X) { 

     new Test() { 
      final T[] X = ?.X.toArray(); 
     }; 
    } 
} 

В моем реальном коде я хочу создать массив в моем анонимном классе из списка аргументов (через toArray() в инициализации анонимного класса), и я хочу, чтобы повторно использовать одно и то же имя переменной, а не использовать венгерскую нотацию, чтобы различать их.

+1

Почему вы не добавляете другую переменную, называемую чем-то другим, которая не является «X» внутри статической функции, а затем вызывает ее из анонимного класса? – m1o2

+0

@ m1o2 да, но это большое количество переменных с близким к одному имени, которые просто обозначают альтернативные типы данных, которые я пытаюсь очистить. Мой код был бы намного чище, если бы я мог изменить тип переменной. – Will

ответ

5

Это невозможно в Java. Функциональные параметры не имеют «пространства имен», например this, которое вы можете использовать для обозначения какой переменной вы имеете в виду.

Единственным решением является создание произвольного префикса, такого как outerX для внешнего параметра или xAsArray для внутреннего.

Смежные вопросы