Math.clamp()
Ограничьте значение диапазоном с помощью единственного понятного вызова.
Сравнение кода
✕ Java 8
// Clamp value between min and max
int clamped =
Math.min(Math.max(value, 0), 100);
// or: min and max order confusion
✓ Java 21+
int clamped =
Math.clamp(value, 0, 100);
// value constrained to [0, 100]
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Самодокументируемый
clamp(value, min, max) однозначен.
Меньше ошибок
Больше никакой случайной перестановки порядка min и max.
Все числовые типы
Работает с int, long, float и double.
Старый подход
Вложенные min/max
Современный подход
Math.clamp()
Начиная с JDK
21
Сложность
Начинающий
Поддержка JDK
Math.clamp()
Доступно
Широко доступен начиная с JDK 21 LTS (сентябрь 2023)
Как это работает
Math.clamp(value, min, max) ограничивает значение диапазоном [min, max]. Понятнее, чем вложенные Math.min/Math.max, и доступен для int, long, float и double.
Связанная документация
Доказательство