Отладчик не может видеть локальную переменную в лямбде

Я заметил, что когда я наведу курсор мыши на локальную переменную, когда мой отладчик остановлен внутри лямбды, он сообщитCannot find local variable 'variable_name' даже если он виден внутри лямбды и используется.

Пример кода

public class Main {
    public static void main(String[] args) {
        String a = "hello_world";
        m1(a);
    }

    private static void m1(String a) {
        AccessController.doPrivileged((PrivilegedAction<String>) () -> {
            System.out.println("blala " + a);
            return "abc";
        });
    }
}

Попробуйте с точкой останова вSystem.out.println("blala " + a); и послеreturn "abc" и он всегда сообщает об одной и той же ошибке.

я использовалAccessController.doPrivileged потому что это то, что я использовал в своем исходном коде и, конечно, я использую Java 8.

Это говорит то же самое вWatchers а такжеEvaluate Expression.

Я попытался использовать версию "анонимный класс", и отладчик видит значениеa правильно

private static void m1(String a) {
    AccessController.doPrivileged(new PrivilegedAction<String>() {
        @Override
        public String run() {
            System.out.println("blala " + a);
            return "abc";
        }
    });
}

Я что-то упускаю из-за лямбда-выражений или это ошибка IntellIJ IDEA 14?

Я не хочу сообщать об ошибке прямо сейчас, потому что я уже сообщил об ошибке, которая была вызвана моим кодом вместо IntellIJ IDEA, поэтому я хочу быть уверен, прежде чем что-то делать (и потому что я не использую Java 8 так часто, так что я могу ошибаться).

Ответы на вопрос(2)

Ваш ответ на вопрос