versus java python

versus - ¿Python-como decoradores en Java?



python vs java 2017 (4)

Esta pregunta ya tiene una respuesta aquí:

Paso la mayor parte de mi tiempo programando en Python, así que perdóname si mi enfoque a este problema es breve:

Quiero que ciertos métodos de una clase requieran credenciales de inicio de sesión. Simplemente, cada método debe verificar si la variable de clase user está configurada, y si es así, continuar, pero si no, escupir un mensaje de "es necesario iniciar sesión".

En Python, solo escribiría un decorador para hacer esto. ¿Cómo puedo lograr lo mismo en java con la menor cantidad de código redundante posible?

¡Gracias!


Lo más sencillo es escribir un método como "assertCredentials" y llamar a ese método al comienzo de cada método que necesite credenciales. Si las credenciales no están establecidas, el método debería lanzar una excepción, que abortará el método principal.

Java tiene anotaciones que pueden usarse para decorar métodos, etc., pero no creo que usar anotaciones en este caso simplifique las cosas.



Una forma de resolver esto en Java es usar una herramienta de programación orientada a Aspect . Una de esas herramientas es AspectJ . Probablemente encontrará que este tipo de problema es un ejemplo que se usa comúnmente para motivar el AOP.

El AOP puede ser una forma bastante pesada de resolver este problema en particular, por lo que es posible que desee explorar simplemente agregando los controles apropiados a cada método. No hay ningún equivalente directo a los decoradores de Python en Java nativo.