Читаю:
Java SE 8 представляет собой единое наибольшее развитие языка Java в его истории. Относительно небольшое количество возможностей — лямбда-выражения, ссылки на методы и функциональные интерфейсы — объединены для получения модели программирования, которая сочетает объектно-ориентированный и функциональный стили. Под руководством Брайана Гетца (Brian Goetz) это слияние достигнуто таким образом, что поощряет лучшие практики — неизменность, отсутствие состояния, композиционность — при сохранении “чувства Java” — удобочитаемости, простоты, универсальности.
Что значит "отсутствие состояния"?
В Объектно-ориентированном программировании объект это сущность обладающая тремя признаками:
В Функциональном программировании объектов нет, но есть функции. И функции не имеют состояния - они чистое поведение
В Java 8 были добавлены лямбды и другие вещи из функциональной парадигмы. Лямбда в функциональном программировании - это анонимная функция и у нее нет состояния.
Вот об этом отсутствии состояния (как функциональном программировании) и идет речь.
Это плохой перевод термина stateless, то есть объекта который не имеет состояния:
Stateless object is an instance of a class without instance fields (instance variables). The class may have fields, but they are compile-time constants (static final).
переводя на общедоступный русский язык, это объект который не имеет полей/переменных описывающих его внутреннее состояние. Точнее объект может иметь поля, но это переменные типа static final, то есть неизменяемые.
Чтобы понять разницу между объектами имеющими состояние и нет, приведу пример:
private static class Stateless {
public String addPrefix(String prefix, String str) {
return prefix + str;
}
}
private static class Statable {
private String prefix = "prefix";
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String addPrefix(String str) {
return prefix + str;
}
}
Класс Stateless не имеет внутреннего состояния, т.к. у него отсутствуют нестатические поля.
А Stetable, напротив, имеет состояние, т.к. у него есть поле prefix, которое к тому же можно изменять. Изменение нестатических полей объекта называется изменением состояния.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости