Это зависит от того, использует ли функция внешнюю переменную или нет для выполнения операции.
Внешние переменные - переменные, определенные вне области действия функции.
Лямбда-выражения не сохраняют состояния , поскольку это зависит от параметров, внутренних переменных или констант для выполнения операций.
Function<Integer,Integer> lambda = t -> {
int n = 2
return t * n
}
Закрытия состояние удержания , поскольку для выполнения операций используются внешние переменные (то есть переменная, определенная вне области действия тела функции), а также параметры и константы.
int n = 2
Function<Integer,Integer> closure = t -> {
return t * n
}
Когда Java создает замыкание, она сохраняет переменную n с помощью функции, чтобы на нее можно было ссылаться при передаче другим функциям или где угодно.