Читаю:
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
, которое к тому же можно изменять. Изменение нестатических полей объекта называется изменением состояния.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется сущность
Как средствами IDE сменить версию всех проектов, дочерних от корневого? Есть maven команда, которая это делает из консоли (чуть позже её добавлю,...
Как уменьшить расстояние между дивами? чтоб было, как на картинке?