Pregunta

¿Existe una manera simple de interceptar métodos en Java? Necesito agregar una anotación a los métodos requeridos para que se llame una lógica antes de pasar por el método.

public void verifyActivity() {
   // Asset if you are on a wrong page
}

@VerifyActivity
public void testLogin() {
   // Login for my automate test
}

@VerifyActivity
public void testSomethingElse() {
   // Test some other UI Automation stuff
}

EDITAR:

La biblioteca Guice recomendada para aplicaciones de Android no contiene AOP. ¿Es posible lograr esto usando la reflexión sin agregar bibliotecas?

¿Fue útil?

Solución

Guice proporciona una forma fácil de implementar anotaciones. Mira esto.

http://code.google.com/p/google-guice/wiki/aop

http://code.google.com/p/google-guice/

Otros consejos

Como dijo Sid Malani Google Guice es genial para esto. En general quieres leer Tutoriales de programación orientados a los aspectos ... hay una buena herramienta llamada Jemangler que también puede ser de uso

Puede usar la reflexión si ha codificado las interfaces a través de proxies dinámicos.

Dudo que se pueda hacer bien sin libres de terceros.

Hay una biblioteca llamada CGLIB, que es capaz de tales cosas.

Básicamente, creará una subclase de la clase interceptada en tiempo de ejecución. Podrá "anular" los métodos implementando un InvocationHandler, que actuará como un proxy cuando se llame a cualquiera de los métodos de superclase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top