Подтвердить что ты не робот

Python-подобные декораторы в Java?

Я трачу большую часть своего времени на программирование на Python, так что простите, если мой подход к этой проблеме ограничен:

Я хочу, чтобы определенные методы класса требовали учетных данных для входа. Просто каждый метод должен проверить, установлена ​​ли переменная класса user, и если да, продолжите, но если нет, выплюните сообщение "вам нужно войти в систему".

В Python я бы просто написал декоратор, чтобы сделать это. Как я могу выполнить одно и то же в java с минимальным избыточным кодом?

Спасибо!

4b9b3361

Ответ 1

Один из способов решения этой проблемы в Java - использовать инструмент Aspect-oriented programming. Одним из таких инструментов является AspectJ. Вероятно, вы обнаружите, что этот тип проблемы является примером, который обычно используется для мотивации АОП.

AOP может быть довольно тяжелым способом решения этой конкретной проблемы, поэтому вам может потребоваться изучить возможность добавления соответствующих проверок для каждого метода. В родной Java нет никакого прямого эквивалента декодерам Python.

Ответ 2

Простейшая задача - написать метод типа assertCredentials и вызвать этот метод в начале каждого метода, который требует учетных данных. Если учетные данные не установлены, метод должен генерировать исключение, которое отменяет родительский метод.

Java имеет аннотации, которые могут использоваться для украшения методов и т.д., но я не думаю, что использование аннотаций в этом случае упростило бы вещи.

Ответ 3

Вы можете попробовать Google Guice AOP, который является относительно более легким, чем структура AOP, такая как AspectJ.