Ответ
В Java нет встроенных примитивных типов, которые строго ограничивают значения только положительными числами. Однако некоторые типы имеют естественные ограничения:
1. Беззнаковый char
- 16-битный беззнаковый целочисленный тип
- Диапазон: 0 до 65,535
char positiveChar = 40000; // Корректно // char negativeChar = -1; // Ошибка компиляции
2. Типы с ручной валидацией
Для byte, short, int, long требуется явная проверка:
Вариант A: Класс-обёртка
public final class PositiveInteger {
private final int value;
public PositiveInteger(int value) {
if (value < 0) {
throw new IllegalArgumentException("Value must be positive: " + value);
}
this.value = value;
}
public int getValue() { return value; }
}
Вариант B: Библиотечные проверки
// Apache Commons Lang
Validate.isTrue(value >= 0, "Value must be non-negative");
// Java 9+ Objects
this.value = Objects.checkIndex(value, Integer.MAX_VALUE);
3. Специализированные библиотеки
- JSR 305/308 аннотации
@NonNegative - Apache Commons Math:
NaturalNumberи подобные
Важно: Для строгой гарантии положительности всегда используйте проверки в конструкторах и сеттерах.