Массивы не работают так. Когда вы передаете массив функции, адрес первого элемента передается как указатель, и внутри функции больше нет информации о размере массива. (Прежде чем сам компилятор мог определить размер, потому что массив был объявлен в области видимости, но функцию можно вызывать из любого числа мест)
Если вы хотите сделать что-то подобное, вам придется либо использовать контейнерный класс, такой как вектор, или вы можете передать второй аргумент в функцию, определяющую размер массива. Другой способ заключается в том, чтобы иметь какую-то конечную точку в вашем массиве, как, например, в случае с c-строками, например, нулевое значение.
Посмотрите ответ EJB на этот вопрос;
Как повторно использовать длину поля в форме, валидации и ddl?
Перефразируя, если вам нужна длина из столбца firstName в таблице person , вы используете этот код.
person.getClass().getDeclaredField("firstName").getAnnotation(Column.class).length()
Ну, самый легкий способ сделать это использовал бы отражение с Вашими аннотациями. Я не буду дешевым хотя, с точки зрения производительности.
Используя Отражение был бы очевидный ответ.
Вы - использование, в спящем режиме? Раз так затем Быть в спящем режиме Блок проверки допустимости должен проверить длину для Вас и предоставить подходящее сообщение об ошибке.