Замыкания позволяют вам обращаться к переменным в их внешних областях. Внешняя переменная области видимости в этом случае (b) объявляется как то, что Java-сообщество теперь называет фактически финальным, то есть ее значение не изменяется с момента инициализации (int b = 20) Чтобы быть доступным.
Имейте в виду, что переменные должны быть объявлены как окончательные или эффективно окончательные, чтобы это работало как замыкания.
Теперь, что касается вашего кода, этот код объявляет метод doProcess (...) , который возвращает метод для частичного выполнения метода doProcess (...) .
Метод process (...) обращается к b во внешней области видимости метода doProcess (...) , который объявлено окончательно окончательным.
Для меня это - в основном все о меньшем количестве шума (плюс создание счастливого Resharper!).
я полагал бы, что любое улучшение во время компиляции будет минимально.
Существует одно различие времени компиляции: когда Вы удаляете ссылку, но все еще имеете директиву использования в Вашем коде, затем Вы получаете ошибку компилятора. Также - чистый список использования директив делает немного легче удалить неиспользованные ссылки.
Обычно компилятор удаляет неиспользованные ссылки, но я не знаю, работает ли это, когда использование находится в коде.
Я видел достойное усиление во время компиляции несколько лет назад, когда я сначала установил ReSharper (на 18 решениях проекта). С тех пор его просто о содержании в чистоте его.
Для меня чистый список использования операторов вначале может дать хорошее понимание типов для ожидания.
Нет никакого влияния во время выполнения. Это - чисто время компиляции. Это потенциально влияет на следующее:
Если у Вас всегда только будут директивы использования, чтобы Вы нуждались и всегда сортировали их соответственно, то, когда Вы приезжаете в разность две версии кода, Вы никогда не будете видеть несоответствующих изменений.
, Кроме того, если у Вас есть аккуратный набор использования директив затем, любой смотрящий на код для запуска с может стать грубым идея того, что будет используемым только взглядом на директивы использования.
Я не могу говорить с преимуществами во время компиляции и производительность, но существует более низкий шанс конфликтов пространства имен, если Вы имеете, минимизируют Ваши объявления использования. Это особенно важно, если Вы пользуетесь больше чем одной сторонней библиотекой.