В других ответах упоминается обычная проверка параметров метода во время выполнения (также аспекты), ничего особенного в этом нет.Единственное, что нужно добавить, это то, что вы делаете трюк, который используется, когда у вас есть тип с плавающей запятой, и вы хотите проверить, равен ли он целочисленному типу, например, если double == int
.Обычно он всегда возвращает false
, поэтому вы применяете double к int для фактической проверки.В вашем коде нет необходимости в этом, поскольку у вас есть только целые числа, int == (int) int
просто не требуется.
Ответ, который вы связали, касается проверки во время компиляции с использованием перечислений - здесь это невозможноможет создать перечисление с большим количеством целочисленных значений, но не делайте этого, если ваш диапазон значений действительно не ограничен.
Другой вариант, который приходит на ум (поскольку он часто используется для выполнения «магии» где-то ещечем ваш код) это обработка аннотаций, но я не думаю, что это на самом деле возможно для этого варианта использования, определенно не стандартным способом.
Что вам нужно, это какой-то анализатор исходного кода.Что-то вроде плагина Intellij / Eclipse, PMD , Checker или какого-либо другого инструмента, похожего на те.Он будет анализировать каждое вхождение вашего вызова метода и проверять, меньше ли первый аргумент, чем второй, в противном случае он не скомпилируется, вы даже не доберетесь до времени выполнения.Определенно не стоит усилий в этом случае, но это может быть хорошо, если вы хотите решить эту проблему в больших масштабах, например, с пустыми значениями Java.